2014-11-04 40 views
0

我尽量让漂亮的网址如下htaccess的条目:htaccess的mod_rewrite的服务器错误

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) 

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

在此先感谢,并认为 DOC

回答

0

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

捕捉并检查它在单独但是,你不“T需要真正需要捕捉查询字符串的其余部分重写,你可以只使用QSAQuery String Append标志在您的规则:

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

现在,我得到“不缶nd“消息。没有第三个参数就没关系。 – 2014-11-04 12:55:13

+0

您要输入的原始网址是什么? – arco444 2014-11-04 12:56:23

+0

我必须问是否这样链接是正确的:www.example.com/sub_x/page_x&ID=someID – 2014-11-04 13:01:55