我不知道为什么,但每次我在.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配置文件。
任何帮助都将不胜感激。
答案 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)。