我在.htaccess文件中使用了以下重写规则,但每当我向字符串添加参数时,它都会使重写失败
RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+$ category.php?id=$1 [L]
例如:
如果我进行以下操作,一切正常:
c87/newest-post
但如果我去:
c87/newest-post?param1=this¶m2=that
c87/newest-post/?param1=this¶m2=that
它重定向错误并失败。我认为它与QSA标签有关,但由于我对重定向的了解不足,我无法看清我做错了什么。
答案 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¶m2=that -> category.php?id=87¶m1=this¶m2=that
# c87/newest-post/?param1=this¶m2=that -> category.php?id=87¶m1=this¶m2=that