2013-09-05 56 views
1

这里是我的规则:重写规则将导致500错误

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

检查日志以查找出现500错误的原因。 mod_rewrite是否加载? –

回答

0

不能使用RewriteRule捕捉与//一个URL,因为这是由Apache的剥离到一个单一的/。使用ReeriteCond并用%{THE_REQUEST}变量代替:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+forward/([^?\s]+) [NC] 
RewriteRule^forward.php?url=%1 [L,NE,QSA] 
0

删除连字符和它应该工作:

RewriteRule ^forward(/.*)?$ forward.php?url=$1 [NC,L] 
0

错误500通常意味着服务器的配置是错误的,你的情况重写规则。您通常可以在Apache的错误日志中查询详细信息。就你而言,看起来你的重写规则在语法上是错误的。

这个工作对我来说:

RewriteRule ^forward/(.*)$ forward.php?url=$1 [NC,L]