我已经为billing.example.com设置了两个本地虚拟主机(http和自签名https)并在firefox中用萤火虫尝试它们。 Http虚拟主机的唯一目的是将所有请求重定向到https。Apache SSL启用虚拟主机返回随机400错误请求
几乎每次我从https请求页面,一个或两个文件与相关的资源(图像,JS,CSS等),有时PHP页面本身返回400错误的请求在萤火虫窗口,有时一个或两个文件显示为已加载很长时间。 当我点击萤火虫中的问题链接时,文件会按照它应该加载的方式加载。 此外,差错请求或未加载的文件几乎每次我加载页面时都会发生变化。
任何想法?
服务器:Ubuntu的10.04,阿帕奇/ 2.2.14的mod_ssl与
虚拟主机:
Listen 80
<VirtualHost *:80>
ServerName billing.example.com
UseCanonicalName On
DocumentRoot /code/site/billing
...
RewriteEngine On
RewriteRule ^/(.*)$ https://billing.example.com/$1
</VirtualHost>
Listen 443
<VirtualHost *:443>
ServerName billing.example.com
UseCanonicalName On
DocumentRoot /code/site/billing
...
SSLEngine On
SSLCertificateFile /code/site/ssl/example.crt
SSLCertificateKeyFile /code/site/ssl/example.key
</VirtualHost>
其余来自Ubuntu的Apache2默认设置。
如果你直接访问'https:// billing.example.com /',你可能会更好的在serverfault.com上询问这个问题 – 2010-10-27 17:18:02
它可以工作吗?我不确定我是否会将整个URI空间完全重写为HTTP到HTTPS:它会使通过HTTP进行的所有请求都像通过HTTPS一样工作,并且人们倾向于关闭通知,告诉他们要去从HTTPS到HTTP,所以他们不会注意到(不安全的)重定向。如果使用HTTP(或至少将所有内容重定向到“root”:https:// billing.example.com /'),最好使它失败。 – Bruno 2010-10-27 17:23:50
serverfault上的类似问题。没有解决方案,虽然:(http:// serverfault。com/questions/226040 /间歇性400-bad-request-header-field-is-missing-with-apache-and-ssl – theon 2012-08-21 16:29:35