Перенаправление запросов на SSL

Опишу несколько вариантов перенаправления запросов с 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

Оставьте комментарий

Добавить комментарий