Apache: Редирект http на https

Итак исходные данные: есть сайт, который прописан в apache как http, так и https. Необходимо чтобы при попытки входа на http перенаправлялся сайт на https. Причем желательно это сделать средствами самого apache. На самом деле задача довольно простая.

В начале проверяем – запускается ли модуль rewrite. Ищем в httpd.conf строчку

LoadModule rewrite_module libexec/apache22/mod_rewrite.so

(в линуксе ищем в папке mods-enabled)
Нашли – замечательно. Нет – надо доставить модуль и дописать(для линукса сделать линк из директории mods-available).
Далее прописываем в настрйках виртуального хоста в директории

RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

и теперь при заходе на сайт по http – автоматически будет перенаправлятся на https

Небольшое дополнение для FreeBSD.
Чтобы настроить в apache доступ через ssl (443 port):

  • В httpd.conf раскомментируем строчку “Include etc/apache22/extra/httpd-ssl.conf” (смотрим есть ли ssl_module, если нет – устанавливаем)
  • копируем созданный (статья) или купленный сертификат и ключ (*.crt и *.key) в домашнюю директорию сервера (/usr/local/etc/apache22)
  • настраиваем файл /usr/local/etc/apache22/extra/httpd-ssl.conf

При настройке файла не забываем секцию

DocumentRoot /usr/local/www/apache22/data
<Directory /usr/local/www/default/in>
    AllowOverride None
    Order Deny,Allow
</Directory>