Apache重写规则不适用于变量?想要为某个路径禁用HTTPS

时间:2012-08-08 16:58:47

标签: apache mod-rewrite

我们服务于数十个网站,并且不希望执行特定于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:

  

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

提前致谢

2 个答案:

答案 0 :(得分:2)

如果您要重写为完全限定的网址,我认为您不能使用passthroughPT)标记。这必须作为客户端重定向处理。如果您将PT替换为R(或只删除已有PT标记的R标记),它应该有效。

答案 1 :(得分:1)

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

RewriteCond %{HTTPS} on
RewriteRule ^/?info/ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]