2

我们为数十个网站提供服务,并且不想执行特定于 vhost 的重写规则。基本上,我需要永远不要通过 HTTPS 提供所有 /info/ 页面。

目前我们有这个:

RewriteRule ^/info/([A-Za-z_.0-9-]*) /info.jsp?LinkName=$1 [PT,QSA,L]

我想我可以将重写规则更改为:

RewriteRule ^/info/([A-Za-z_.0-9-]*) http://%{SERVER_NAME}/info.jsp?LinkName=$1 [PT,QSA,L]

或者

RewriteRule ^/info/([A-Za-z_.0-9-]*) http://%{HTTP_HOST}/info.jsp?LinkName=$1 [PT,QSA,L]

或者

RewriteRule ^/info/([A-Za-z_.0-9-]*) http://%{HTTP_HOST}/info.jsp?LinkName=$1 [PT,QSA,L,R=301]

ETC...

但无论我做什么,在进行涉及变量的任何重写规则更改时,我在点击这些信息页面时都会出现 404:

“错误请求您的浏览器发送了此服务器无法理解的请求。”

提前致谢

4

2 回答 2

2

如果您要重写为完全限定的 URL,我认为您不能使用passthrough( ) 标志。PT这必须作为客户端重定向处理。如果您替换PTR(或仅删除PT已有标志的R标志),它应该可以工作。

于 2012-08-08T17:38:22.257 回答
1

您已经拥有的用于重写 info.jsp 的规则很好。但是你需要在它之前添加一些规则。

RewriteCond %{HTTPS} on
RewriteRule ^/?info/ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
于 2012-08-08T20:11:19.480 回答