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

在.htaccess中使用mod_rewrite时出现500内部错误,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我不知道为什么,但每次我对.htaccess文件中的重写规则使用复杂模式进行操作时,都会出现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] 我只在“重写引擎打开”的情况下进行了尝试,没有出现错误。 我尝试过一些非常简单的方法,比

我不知道为什么,但每次我对.htaccess文件中的重写规则使用复杂模式进行操作时,都会出现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]
我只在“重写引擎打开”的情况下进行了尝试,没有出现错误。 我尝试过一些非常简单的方法,比如:“重写规则^ups/?$/xyz[R]”,效果非常好。 我尝试过使用和不使用符号链接选项。 我试过在模式的开头加斜杠和不加斜杠,在替换的开头加斜杠和不加斜杠

似乎每当我使用看起来“复杂”的正则表达式时,它就是不起作用

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

任何帮助都将不胜感激。

尝试将其更改为

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

为了解释您的错误:在字符类中,破折号(
-
)通常描述两个字符之间的范围。除非它出现在字符类的开始或结束处。但是您的范围从
\
+
无效,因为
\
(0x5F)的位置高于
+
(0x2B)