Перенаправление с http на https в apache

Задача: перенаправить http запросы на защищенное https соединение например, запрос http://site.domain.ru будет перенаправлен на https://site.domain.ru

Конфигурация: Debian 7, apache 2.2.22

Примечание: в данной статье не рассматривается генерация ключей и сертификатов. Читайте в следующей

Начнём

1. Если не включено, включаем поддержку необходимых модов в apache:

# ln -s /etc/apache2/mods-available/vhost_alias.load /etc/apache2/mods-enabled/vhost_alias.load
# ln -s /etc/apache2/mods-available/vhost_alias.conf /etc/apache2/mods-enabled/vhost_alias.conf
# ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
# ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
# ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

host_alias – позволяет на одном IP адресе поддерживать несколько виртуальных хостов;
ssl – поддержка шифрования SSL (в данной статье настройка SSL не рассматривается);
rewrite – изменяет запрошенный пользовательский URL на URL определенный правилом.

2. Редактируем vhost_alias:

# nano /etc/apache2/mods-enabled/vhost_alias.conf
<VirtualHost *:80>
# Данный VirtualHost обрабатывает HTTP запросы для домена site.domain.ru
ServerAdmin admin@domain.ru
ServerName site.domain.ru
DocumentRoot "/data/www/site"
</VirtualHost>
<VirtualHost *:443>
# Данный VirtualHost обрабатывает HTTPS запросы для домена site.domain.ru включая переадресованные 
ServerAdmin admin@domain.ru
ServerName site.domain.ru
DocumentRoot "/data/www/site"
<Directory "/data/www/site">
Options Indexes
Allow from all
AllowOverride All
DirectoryIndex index.php
</Directory>
# Включаем поддержку SSL и указываем пару ключ+сертификат
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.ru.crt
SSLCertificateKeyFile /etc/ssl/private/domain.ru.key
</VirtualHost>

3. Настраиваем rewrite

# nano /data/www/site/.htaccess
# Включаем поддержку rewrite и определяем правило замены URL
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# Дополнительные опции не имеющие отношения к rewrite
Options +FollowSymLinks
Options -MultiViews
Allow from All

Как это работает: запрос вида http://site.domain.ru будет обработан правилом <VirtualHost *:80> определенным в файле vhost_alias.conf, согласно которому apache прочитает содержимое каталога “/data/www/site” определённого директивой DocumentRoot. Apache первым делом проверит наличие файла .htaccess и выполнит перенаправление согласно директивам Rewrite, изменив URL http://site.domain.ru на https://site.domain.ru. Измененную URL https://site.domain.ru обработает правило <VirtualHost *:443> в котором указаны директивы SSL и будет установлена защищенная сессия.

Взято с http://specnix.ru/apache/redirect-from-http-to-https-in-apache

и с http://web-optimizator.com/301-redirekt-htaccess/

 

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

Ваш e-mail не будет опубликован.