我们服务于数十个网站,并且不希望执行特定于vhost的重写规则。基本上,我需要所有/ info / pages永远不会通过HTTPS提供。
目前我们有这个:
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]
等...
但无论我做什么,在进行涉及变量的任何重写规则更改时,我都会在点击这些信息页面时使用404:
“错误请求您的浏览器发送了此服务器无法发出的请求 理解“。
提前致谢
答案 0 :(得分:2)
如果您要重写为完全限定的网址,我认为您不能使用passthrough
(PT
)标记。这必须作为客户端重定向处理。如果您将PT
替换为R
(或只删除已有PT
标记的R
标记),它应该有效。
答案 1 :(得分:1)
您已经拥有重写info.jsp的规则很好。但是你需要在之前添加一些规则。
RewriteCond %{HTTPS} on
RewriteRule ^/?info/ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]