Введение
Если на сервере установлен SSL-сертификат, по умолчанию веб-сайт недоступен через защищенное HTTPS-соединение. Вам нужно добавлять « HTTPS » к URL-адресу каждый раз, когда вам нужно безопасно подключиться. Лучший способ обеспечить максимальную безопасность посетителей веб-сайта — включить автоматическое перенаправление с HTTP на HTTPS.
В этом руководстве показано, как перенаправить URL-адрес с HTTP на HTTPS, например, с http://example.it на https://example.it, с помощью Apache в Ubuntu 18.04.
Предпосылки
В этом руководстве предполагается, что у вас есть привилегии суперпользователя — sudo или root — на сервере, на котором работает Apache. Если вы еще не настроили его, следуйте этому руководству: Ubuntu 18.04 LTS Initial Setup.
Предполагается, что Apache установлен. Если он не установлен, следуйте этому руководству: Как установить LAMP (Apache MySQL PHP) на Ubuntu 18.04 LTS.
Включить модуль перезаписи
Для перенаправления с HTTP на HTTPS мы будем использовать модуль Apache mod_rewrite. Таким образом, пользователи смогут получить доступ к вашей с большей безопасностью.
Во-первых, убедитесь, что модуль mod_rewrite включен с помощью этой команды:
sudo a2enmod rewrite
Перезапустите Апач:
sudo service apache2 restart
С включенным модулем перезаписи мы можем настроить Apache с правилами перенаправления, используя файл .htaccess.
Давайте посмотрим, как использовать файл.htaccess для установки правил перенаправления.
Включить файл.htaccess
Чтобы включить.htaccess, откройте файл конфигурации Apache. В Ubuntu файл конфигурации по умолчанию находится в /etc/apache2/sites-enabled/000-default.conf, поэтому откройте файл:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Найдите DocumentRoot вашего сайта и запишите его. По умолчанию корневая папка (DocumentRoot ) — это /var/www/html, поэтому мы будем использовать этот каталог в нашем примере конфигурации.
Добавьте следующую директиву Directory в конец файла, если ее еще нет, и обязательно замените DocumentRoot своим каталогом (если он отличается), в противном случае оставьте следующее:
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Теперь файл конфигурации должен выглядеть так:
<VirtualHost *:80>...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName TUO_DOMINIO.it
ServerAlias www.TUO_DOMINIO.it
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined...
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Теперь перезапустите Apache, чтобы изменения вступили в силу:
sudo service apache2 restart
Apache настроен на чтение файлов .htaccess, расположенных в любом месте каталога /var/www/html. Теперь давайте добавим правила перезаписи для редиректа.
Теперь создайте или отредактируйте файл.htaccess, чтобы включить правила перенаправления. Переместим каталоги в DocumentRoot, в нашем случае /var/www/html:
cd /var/www/html
Давайте создадим или изменим файл .htaccess:
sudo nano.htaccess
Конечно, если вы еще не создали файл, он будет пустым. Теперь давайте настроим редирект с www на без www или с без www на www.
Добавьте следующие строки кода, чтобы установить перенаправление с www на не-www с HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
Наоборот, с не-www на www с HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST}!^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
Вывод
В этом руководстве мы узнали, как настроить правила перенаправления для Apache2 с www на без www и наоборот с HTTPS.