如何通过.htaccess将带特定查询字符串的URL重定向至首页?
问题排查与正确规则
你的规则存在两个关键错误:
- RewriteRule的第一个匹配参数不能写完整域名,它仅匹配域名后的路径部分(此处为根路径)
- 重定向目标写法错误,应指向首页路径而非完整URL
正确的.htaccess规则:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配查询字符串为s={search_term_string}的请求 RewriteCond %{QUERY_STRING} ^s=%7Bsearch_term_string%7D$ # 重定向到首页,?用于清空查询字符串,301为永久重定向 RewriteRule ^/?$ /? [R=301,L] </IfModule>
规则说明:
RewriteCond %{QUERY_STRING} ^s=%7Bsearch_term_string%7D$:精准匹配查询字符串为s={search_term_string}的请求(%7B是{的URL编码,%7D是}的URL编码)RewriteRule ^/?$ /?:^/?$兼容Apache不同配置下的根路径匹配,/?确保重定向到首页时清空原有查询字符串R=301:标记为永久重定向,有助于搜索引擎更新收录L:表示匹配该规则后不再执行后续规则
若需要匹配包含该参数的任意查询字符串(比如参数前后还有其他内容),可将条件调整为:
RewriteCond %{QUERY_STRING} (^|&)s=%7Bsearch_term_string%7D(&|$)
内容的提问来源于stack exchange,提问作者Ayra Gianellie Orfelia
相关产品推荐
相关产品推荐

