RewriteRule导致500错误

时间:2013-09-05 16:55:03

标签: mod-rewrite

这是我的规则:

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错误,我无法弄清楚为什么。

3 个答案:

答案 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]