WordPress的.htaccess查询字符串重定向规则在深层目录不生效
问题修复方案
失效原因
你当前的配置存在两个问题:
- 自定义重定向规则如果放在WordPress默认重写规则之后,会被WordPress的默认规则优先拦截,不会执行你的自定义逻辑
- 你写的
RewriteRule替换路径没有保留原请求的目录路径,仅根路径请求能正常匹配,深层目录请求的路径会丢失
正确配置方法
将以下自定义规则放在.htaccess文件的最顶部,优先于所有WordPress默认规则:
RewriteEngine On RewriteCond %{QUERY_STRING} catid=([0-9]+) [NC] RewriteRule (.*) $1/catid%1? [R=301,L]
规则说明
$1会自动带入RewriteRule捕获到的原请求路径,比如访问example.com/category/?catid=10时,$1的值为category,拼接后就能生成你需要的/category/catid10路径- 末尾的
?作用是清除原始请求携带的查询字符串,避免重定向后地址末尾仍然保留?catid=xx参数 - 调试阶段建议先把
R=301改为R=302使用临时重定向测试,避免浏览器缓存旧的301规则导致调试异常,确认规则生效后再改回301即可
内容的提问来源于stack exchange,提问作者vl4der
相关产品推荐
相关产品推荐

