我为billing.example.com设置了两个本地虚拟主机(http和自签名https),并在firefox中使用firebug进行尝试。 Http vhost唯一目的是将所有请求重定向到https。
几乎每次我从https请求页面时,一个或两个带有相关资源的文件(图像,js,css等等),有时php页面本身在firebug窗口中返回400个错误请求,有时会显示一个或两个文件因为装了很长时间。 当我点击firebug中的问题链接时,文件会按原样加载。 此外,每次我加载页面时,糟糕的请求或未加载的文件几乎都会发生变化。
有什么想法吗?
服务器:Ubuntu 10.04,Apache / 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>
Rest是ubuntu apache2的默认设置。
答案 0 :(得分:0)
对于ssl部分,您可能希望转为UseCanonicalName Off
对于虚拟主机,您可能使用与主服务器不同的域,这可能会导致您在虚拟主机之外查找文件。
为了在端口80上完整,我将[R,L]添加到重定向。
RewriteEngine On
RewriteRule ^/(.*) http://billing.example.com/$1 [L,R]
答案 1 :(得分:0)
我遇到apache 2.2.9这个问题,升级到apache 2.2.22解决了我的问题。
我会在某些页面请求上获得随机的400响应代码。有时是图像,有时是AJAX请求。有时,页面本身会返回400以及此消息。
错误请求 您的浏览器发送了此服务器无法理解的请求。 请求标头字段缺少':'分隔符。 活
我发现以下地毯报告似乎有关。该错误已在apache 2.2.15修复:https://bugzilla.redhat.com/show_bug.cgi?id=652335
我认为这个错误是导致使用https时出现大量随机错误的原因: 您的浏览器发送了此服务器无法理解的请求 请求标头字段缺少':'分隔符。
所以我想我会尝试使用最新的mod_ssl更新到最新的apache - 这似乎有效。