如何使用.htaccess仅对含特定查询字符串的页面进行重定向?
解决.htaccess重定向问题
直接用下面的规则替换你原来的代码,就能实现需求:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/index\.php$ RewriteCond %{QUERY_STRING} (^|&)manufacturer_id=11(&|$) RewriteRule ^ https://example.com/brand [R=302,L,QSD]
规则细节解释
- 查询字符串匹配条件
(^|&)manufacturer_id=11(&|$):专门适配带多个参数的URL,不管manufacturer_id=11在查询串的开头、中间还是结尾,都能精准匹配,比如?route=product/manufacturer/info&manufacturer_id=11或者?manufacturer_id=11&page=2这类场景都能覆盖到。 - 末尾的标志:
R=302:临时重定向,测试没问题后可以改成R=301永久重定向(搜索引擎会缓存301,所以先测302更稳妥)。L:匹配这条规则后就停止执行后续的重写规则,避免冲突。QSD:自动丢弃原URL的所有查询参数,不让它们跟着跳到新页面。
原规则失效的原因
你原来的规则里RewriteCond %{QUERY_STRING} manufacturer_id=11只能匹配**查询字符串完全等于manufacturer_id=11**的情况,而你的实际URL还带有route、page这类额外参数,查询串是多个参数组合的,自然匹配不上,所以规则没生效。
内容的提问来源于stack exchange,提问作者guru
相关产品推荐
相关产品推荐

