【发布时间】:2014-10-06 01:44:04
【问题描述】:
Apache/2.2.15,CentOS Linux。
我有一个网站,我希望整个网站始终都进行 SSL 加密。通常,我不使用 mod_rewrite 进行 www/non-www 重定向;我只使用VirtualHosts 和Redirect 指令。
但是,尝试对我的 HTTPS 站点执行此操作时,会在所有浏览器中返回一般 SSL 连接错误。这是我的 vhost 文件(域名和 IP 地址已更改):
NameVirtualHost 192.168.0.256:80
NameVirtualHost 192.168.0.256:443
<VirtualHost 192.168.0.256:80>
ServerName www.example.com
ServerAlias example.com
Redirect / https://www.example.com/
</VirtualHost>
# ############################
# This block breaks everything
# ############################
<VirtualHost 192.168.0.256:443>
ServerName example.com:443
Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost 192.168.0.256:443>
DocumentRoot /var/www/example_site/htdocs/
ServerName www.example.com:443
ErrorLog /var/www/logs/example_site/error_log
SSLEngine On
SSLCertificateFile /etc/httpd/ssl.crt/www.example.com.crt
SSLCertificateKeyFile /etc/httpd/ssl.key/www.example.com.key
SSLCACertificateFile /etc/httpd/ssl.crt/www.example.com.ca-bundle
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory /var/www/example_site/htdocs/>
Options FollowSymLinks MultiViews
AllowOverride All
</Directory>
<Files ~ "\.php$">
SSLOptions +StdEnvVars
</Files>
</VirtualHost>
标有“这个块破坏了一切”的块似乎是罪魁祸首。当 VirtualHost 块被注释掉时,网站会按预期加载,一切都很好。但是我真的想要/需要将非 www 重定向到 www,并且当启用该块时,每次尝试加载站点时都会得到这个:
错误日志似乎没有显示任何有用的信息。谁能从中看出到底出了什么问题?
【问题讨论】:
标签: apache redirect virtualhost apache2.2 virtual-hosts