Протокол HTTP (HyperText Transfer Protocol) используется для передачи веб-контента. Сам по себе HTTP не шифрует данные, а это значит, что информация может быть перехвачена и прочитана третьими лицами. Именно здесь на помощь приходит HTTPS (HTTP Secure). HTTPS шифрует данные, обеспечивая безопасность такой информации, как учетные данные для входа в систему и платежные реквизиты.
Использование HTTPS стало стандартной практикой не только для сайтов электронной коммерции, но и для всех веб-сайтов. Браузеры теперь часто показывают предупреждения для сайтов, использующих HTTP, что влияет на доверие пользователей.
В веб-сервере Apache перенаправление HTTP на HTTPS является обычной практикой для обеспечения безопасности каждого пользовательского соединения. Для этого требуется mod_rewrite, который может быть реализован с помощью файла .htaccess, директивы RewriteRule или директивы Redirect.
Методы перенаправления HTTP на HTTPS в Apache
Перенаправление HTTP на HTTPS в Apache с помощью htaccess
Включите модуль перезаписи для Apache.
1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 |
- В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
- В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Откройте или создайте файл .htaccess в веб-папке, из которой вы хотите установить перенаправление, с помощью удобного текстового редактора.
1 | sudo nano /var/www/html/.htaccess |
Добавьте директиву перенаправления из файла .htaccess.
1 2 3 | RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://www.example.com/$1 [R,L] |
Перезагрузите веб-страницу для проверки перенаправления.
Перенаправление HTTP на HTTPS в Apache с помощью mod_rewrite на конфигурации VirtualHost
Включите модуль перезаписи для Apache.
1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 |
- В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
- В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Откройте конфигурацию VirtualHost, с которого вы хотите настроить перенаправление, с помощью вашего любимого текстового редактора.
1 | sudo vi /etc/apache2/sites-enabled/000-default.conf |
Добавьте RewriteRule и соответствующую директиву в конфигурацию VirtualHost так же, как и метод htaccess.
1 2 3 4 5 | <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://www.example.com/$1 [R,L] </VirtualHost> |
Перезапустите Apache, чтобы изменения вступили в силу.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Перенаправление HTTP на HTTPS в Apache с помощью директивы Redirect
Откройте конфигурацию VirtualHost для HTTP, с которого вы хотите настроить перенаправление, используя ваш любимый текстовый редактор.
1 | sudo nano /etc/apache2/sites-enabled/000-default.conf |
Добавьте директиву redirect в конфигурацию VirtualHost для перенаправления на HTTPS URL.
1 2 3 4 | <VirtualHost *:80> ServerName example.com Redirect permanent / https://www.example.com/ </VirtualHost> |
Где
- permanent эквивалентен 301 редиректу
- для 302 редиректа можно использовать temporary .
Перезапустите Apache, чтобы изменения вступили в силу.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |