htaccess mod_rewrite服务器错误

时间:2014-11-04 12:19:45

标签: regex .htaccess mod-rewrite

我尝试使用以下htaccess条目制作好的网址:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w]+)/?([\w]+)?$ /index.php?subdir=$1&page=$2 (works fine)
#RewriteRule ^([^/]+)/?([^/]+)?$ /index.php?subdir=$1&page=$2 (doesn't work: 500 Int.Serv.Error)

(这个对我来说并不重要,因为第一个正则表达式有效,但如果我理解这个问题也许是我理解的下一个问题)

因此,使用以下行,我将尝试获取查询字符串的其余部分

#RewriteRule ^(\w+)/?([\w]+)?(.*)$ /index.php?subdir=$1&page=$2&$3 (doens't work: 500 Int.Serv.Error)

有人可以解释一下,我做错了什么?我已经读过一些关于错误的正则表达式可以创建无限循环的东西。也许我在这里有一两个?

提前致谢和问候 文档

1 个答案:

答案 0 :(得分:0)

查询字符串不可用作RewriteRule的一部分,您必须在RewriteCond %{QUERY_STRING} ...

中单独捕获并检查它

但是,您不需要在重写中实际捕获剩余的查询字符串,只需在规则中使用QSAQuery String Append标记:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w]+)/?([\w]+)?$ /index.php?subdir=$1&page=$2 [QSA]