这是我的规则:
RewriteRule ^forward/?$ forward.php?url=$1 - [NC,L]
这就是我想要的:
浏览器网址:http://mydomain.com/forward/http://anydomainhere.com
改写为:http://mydomain.com/forward.php?url=http://anydomainhere.com
如果匹配,这将是评估的最后一条规则。现在它给了我一个500错误,我无法弄清楚为什么。
答案 0 :(得分:0)
从重写规则中删除连字符,它应该有效:
RewriteRule ^forward(/.*)?$ forward.php?url=$1 [NC,L]
答案 1 :(得分:0)
错误500通常意味着服务器配置错误,在您的情况下是重写规则。您通常可以在Apache的错误日志中查找有关具体情况的详细信息。在您的情况下,您的重写规则似乎在语法上是错误的。
这对我有用:
RewriteRule ^forward/(.*)$ forward.php?url=$1 [NC,L]
答案 2 :(得分:0)
您无法使用RewriteRule
来抓取 //
的网址,因为Apache会将其细分为单个/
。请将ReeriteCond
改为%{THE_REQUEST}
变量:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+forward/([^?\s]+) [NC]
RewriteRule ^ forward.php?url=%1 [L,NE,QSA]