человечность 14.04
Apache/2.4.7
Я отправляю здесь conf файл для своего виртуального хоста и значения по умолчанию ssl хост. не способный изобразить, что является мной делающий неправильно.
http://<website_url>
показывает индекс папки. Я хочу перенаправить это к https.
https://<website_url>
открывается прекрасный.
ВАЖНЫЙ: Я не включил сайт SSL по умолчанию.
cat default-ssl.conf|grep -v "#"
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
</IfModule>
И вот mywebsite конфигурационный файл:
cat www.mywebsite.com.conf|grep -v "#"
<VirtualHost *:443>
ServerName www.mywebsite.com:443
ServerAlias www.mywebsite.com
ServerAdmin abc@mywebsite.com
DocumentRoot /var/www/www.mywebsite.com/html
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
SSLEngine on
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ErrorLog ${APACHE_LOG_DIR}/ssl.error.log
CustomLog ${APACHE_LOG_DIR}/ssl.access.log combined
</VirtualHost>
Если Вы хотите это http://www.mywebsite.com/
всегда быть отправленным https
необходимо использовать redirect
потому что использование mod_rewrite
не рекомендуемое поведение.
Согласно Запросу Перенаправления к Apache SSL страница Wiki:
При использовании SSL у Вас часто будет по крайней мере два виртуальных хоста: один на порте 80 для обслуживания обычных запросов, и один на порте 443 для обслуживания SSL. Если Вы хотите перенаправить пользователей от незащищенного сайта до сайта SSL, можно использовать обычную директиву Перенаправления в незащищенном VirtualHost
Так, попытайтесь добавить эту директиву в своем незащищенном VirtualHost:
Redirect permanent / https://www.mywebsite.com/
Если Вы хотите так или иначе использование rewrite
правило, необходимо включить эти незащищенные строки VirtualHost
:
RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e. http://www.mywebsite.com/foo/ to https://www.mywebsite.com/foo/
как описано в HTTP к Apache HTTPS страница Wiki.
Ваша конфигурация doen't работа, потому что это не определяется незащищенный VirtualHost (обычно на порте 80), который обрабатывает запросы HTTP и перенаправляет их для обеспечения VirtualHost.
Попытка, добавляющая эти строки:
<VirtualHost *:80>
ServerName dev.dom1.com
Redirect permanent / https://dev.dom1.com/
</VirtualHost>
В этом случае Вам не нужен a DocumentRoot
потому что это VirtualHost
перенаправляет все.
Rewrite
правило, показанное в Вашем конфигурационном файле, защищает безопасный VirtualHost
от того, чтобы быть полученным доступ через http
протокол, например http://www.mywebsite.com:443/
будет https://www.mywebsite.com:443/
Необходимо также проверить что сайт, связывающийся с корректной страницей (https) из страниц HTML.
Это - старое сообщение, но в Ubuntu 14.04 исходные работы перезаписи, просто необходимо изменить его на:
<Directory /var/www/>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>