添加查询字符串时,Mod_Rewrite不起作用

时间:2012-06-26 08:49:13

标签: .htaccess mod-rewrite redirect

我在.htaccess文件中使用了以下重写规则,但每当我向字符串添加参数时,它都会使重写失败

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+$ category.php?id=$1 [L]

例如:

如果我进行以下操作,一切正常:

c87/newest-post

但如果我去:

c87/newest-post?param1=this&param2=that
c87/newest-post/?param1=this&param2=that

它重定向错误并失败。我认为它与QSA标签有关,但由于我对重定向的了解不足,我无法看清我做错了什么。

1 个答案:

答案 0 :(得分:1)

由于您在替换网址中指定了查询字符串,因此需要QSA标记:

  

当替换URI包含查询字符串时,默认行为   RewriteRule是丢弃现有的查询字符串,并替换它   与新生成的一个。使用[QSA]标志会导致查询   要组合的字符串。

对于尾随斜线,您需要额外调整。建议的RewriteRule是:

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+/?$ category.php?id=$1 [QSA,L]
# c87/newest-post?param1=this&param2=that  -> category.php?id=87&param1=this&param2=that
# c87/newest-post/?param1=this&param2=that -> category.php?id=87&param1=this&param2=that