1

我在我的 .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 标签有关,但由于我对重定向的了解不足,我看不出我做错了什么。

4

1 回答 1

1

QSA标志是必需的,因为您在替换 URL 中指定了查询字符串:

当替换 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
于 2012-06-26T08:53:56.233 回答