Ubuntu 14.04
阿帕奇/2.4.7
我在这里发布我的虚拟主机和默认 ssl 主机的 conf 文件。无法弄清楚我做错了什么。
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>
这是我的网站配置文件:
cat www.mywebsite.com.conf|grep -v "#"
<VirtualHost *:443>
ServerName www.mywebsite.com:443
ServerAlias www.mywebsite.com
ServerAdmin [email protected]
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
不是推荐的行为。根据Redirect Request to SSL Apache 维基页面:
因此,尝试在您的非安全 VirtualHost 中添加此指令:
如果你想使用
rewrite
规则,你应该在 non-secure 中添加这些行VirtualHost
:如HTTP 到 HTTPS Apache 维基页面中所述。
您的配置不起作用,因为它没有定义处理 http 请求并将它们重定向到安全 VirtualHost 的非安全 VirtualHost(通常在端口 80 上)。
尝试添加这些行:
在这种情况下,您不需要 a
DocumentRoot
因为这VirtualHost
会重定向所有内容。Rewrite
配置文件中显示的规则保护安全VirtualHost
不被通过http
协议访问,例如http://www.mywebsite.com:443/
将是https://www.mywebsite.com:443/
您还应该检查您的网站是否从您的 HTML 页面链接到正确的页面 (https)。
这是一篇旧文章,但在 Ubuntu 14.04 中,原来的重写是有效的,你只需要把它改成: