在.htaccess中使用mod_rewrite时出现500内部错误

时间:2009-04-27 09:35:34

标签: .htaccess mod-rewrite

我不知道为什么,但每次我在.htaccess文件中使用RewriteRule的复杂模式时,我都会收到500内部错误。 我当前的.htaccess文件是:

RewriteEngine on
RewriteRule ^ups/sections/([A-Za-z]{3})/([A-Za-z0-9_-+\.]+)/?$ /dl.php?loct=sec&sec=$1&file=$2 [R=302]

我只尝试过“RewriteEngine on”并且没有错误。 我尝试过一些非常简单的东西:“RewriteRule ^ ups /?$ / xyz [R]”,效果很好。 我已经尝试过使用和不使用Symlinks选项。 我已尝试在模式开始时使用和不使用斜杠,并且在替换开始时使用和不使用斜杠。

似乎每当我使用“复杂”外观正则表达式时,它就不起作用。

注意:我不拥有此服务器,也无法更改apache配置文件。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试将其更改为

RewriteRule ^ups/sections/([A-Za-z]{3})/([A-Za-z0-9_+.-]+)/?$ /dl.php?loct=sec&sec=$1&file=$2 [R=302]

答案 1 :(得分:1)

解释你的错误:在一个字符类中,破折号(-)doeas总是描述两个字符之间的范围。除了它出现在角色类的开头或结尾。但是从_+的范围无效,因为_(0x5F)的位置高于+(0x2B)。