如何使用.htaccess实现带动态参数的URL重定向,为s参数追加post_type=product
.htaccess 实现含s参数URL追加post_type=product重定向规则
首先确保Apache环境已开启mod_rewrite模块,且站点配置中已开启AllowOverride All允许.htaccess文件生效,将以下规则写入站点根目录的.htaccess文件即可:
RewriteEngine On # 匹配查询参数包含s=,且未携带post_type=product的请求 RewriteCond %{QUERY_STRING} (^|&)s= [NC] RewriteCond %{QUERY_STRING} !(^|&)post_type=product [NC] # 追加参数,保留原有所有查询内容,R=302为临时重定向,上线可改为301永久重定向 RewriteRule ^ %{REQUEST_URI}?post_type=product [QSA,L,R=302]
规则说明
- 第一个条件
RewriteCond %{QUERY_STRING} (^|&)s= [NC]用于精准匹配请求中存在s查询参数,避免误匹配其他参数中包含s=字符的请求,NC代表不区分大小写,不需要可删除。 - 第二个条件用于避免重复追加
post_type=product,防止出现无限重定向循环。如果你希望只要存在任意post_type参数就不追加新参数,可以将该条件替换为:RewriteCond %{QUERY_STRING} !(^|&)post_type= [NC] QSA标志会自动将原有所有查询参数拼接到新的参数后,保证原有参数不会丢失,完全符合需求中的保留原有其他参数的要求。
测试验证
使用示例链接测试:访问example.com/?min_price=0&max_price=0&s=test会自动重定向到example.com/?min_price=0&max_price=0&s=test&post_type=product。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

