Опишу несколько вариантов перенаправления запросов с HTTP на HTTPS, первый и второй методы самые надежные:
1) Через virtual hosts.
В конфигурации сайта добавим строку Redirect, например когда на сайт установили SSL сертификат и нужно перенаправить все запросы на HTTPS:
NameVirtualHost *:80 <VirtualHost *:80> ServerName ixnfo.com ServerAlias www.ixnfo.com Redirect / https://ixnfo.com/ </VirtualHost> <VirtualHost *:443> ServerName ixnfo.com ServerAlias www.ixnfo.com DocumentRoot /var/www/html SSLEngine On ... </VirtualHost>
Если нужно перенаправить только некоторые запросы:
NameVirtualHost *:80 <VirtualHost *:80> ServerName ixnfo.com ServerAlias www.ixnfo.com Redirect /forum https://forum.ixnfo.com/ </VirtualHost> <VirtualHost *:443> ServerName ixnfo.com ServerAlias www.ixnfo.com DocumentRoot /var/www/html SSLEngine On ... </VirtualHost>
2) Перенаправление с использованием .htaccess.
Аналогично как и в первом варианте, в нужную директорию сайта положим файл .htaccess и добавим в него строку (чтобы веб-сервер учитывал файл .htaccess, нужно в конфигурации сайта выше указать опцию AllowOverride All):
Redirect /forum https://forum.ixnfo.com/
3) И не рекомендуемый способ, используя mod_rewrite, содержимое нужно добавить в файл .htaccess:
# Включение функции Rewrite RewriteEngine On # Проверяем что соединение не HTTPS RewriteCond %{HTTPS} !=on # Направляем в то же место, но уже HTTPS: RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Еще пример:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_USER_AGENT} ^(.+)$ RewriteCond %{SERVER_NAME} ^ixnfo\.com$ [OR] RewriteCond %{SERVER_NAME} ^www\.ixnfo\.com$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Header add Strict-Transport-Security "max-age=300" </IfModule>
Чтобы разрешить некоторым страницам открываться по http и https, добавим внутри верхнего примера:
RewriteCond %{REQUEST_URI} !^/dir/ RewriteCond %{REQUEST_URI} !^/dir/file.php
Смотрите также:
Использование .htaccess
Как настроить SSL и HTTPS для WordPress
Установка Certbot в Ubuntu