.htaccess 追加查询字符串的重写未触发?

bq8i3lrv  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(129)

我要执行内部重定向
/search/lalafa/search/lalafa?post_type=review
规则是

RewriteRule ^/search/([^/]+)$ /search/$1?post_type=review [L]

似乎正确,但似乎不匹配:
https://htaccess.madewithlove.com/?share=c2ce1c7f-60be-40c8-9f0b-58ffc9eeba40

bprjcwpo

bprjcwpo1#

RewriteRule ^/search/([^/]+)$ /search/$1?post_type=review [L]

这将失败,原因有二:

  1. .htaccessRewriteRulepattern 匹配的URL路径不包括斜杠前缀,因此此规则永远不匹配。它应该是^search/([^/]+)$
    1.如果匹配,则会创建重写循环(500内部服务器错误),因为您正在重写到相同的URL路径,而没有检查查询字符串。
    请尝试以下方法:
RewriteCond %{QUERY_STRING} !=post_type=review
RewriteRule ^search/[^/]+$ $0?post_type=review [L]

$0反向引用包含完整的URL路径,与RewriteRule * 模式 *(注意:前面的 condition 检查查询字符串是否已经等于post_type=review,从而防止重写循环。

相关问题