如何通过.htaccess为WordPress设置301重定向移除URL带数字的/bpage/后缀
注意:WordPress 自动生成的
# BEGIN WordPress到# END WordPress区间的内容会被系统动态覆盖,所有自定义重定向规则必须放在这个区块的上方,不要修改区间内的原有内容,你之前在区间内加的两行错误规则可以直接删除。
你之前的配置失效核心有两个问题:
- 用了
%{QUERY_STRING}匹配查询参数,但你要处理的是URL路径部分,不是问号后的参数,匹配对象完全错误 - 正则只匹配了字母,没有匹配你需要的数字段,目标跳转地址也不符合需求
正确配置方案
完整的.htaccess结构如下:
# 自定义重定向规则,放在WordPress默认配置之前 <IfModule mod_rewrite.c> RewriteEngine On # 移除URL中/bpage/数字段的301重定向规则 RewriteRule ^(.*)/bpage/([0-9]+)/?$ /$1 [L,R=301,NC] </IfModule> # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
规则说明
- 正则
^(.*)/bpage/([0-9]+)/?$中:(.*)捕获/bpage/之前的所有路径内容,[0-9]+匹配1位及以上的正整数(兼容1到数千的可变数值),/?兼容路径末尾带/或不带/的两种情况 - 跳转地址
/$1直接调用捕获到的前缀路径,自动移除/bpage/数字/段 - 参数说明:
R=301为永久重定向,L表示命中规则后停止执行后续重定向逻辑,NC表示不区分路径大小写
修改完成后请清空浏览器缓存再测试,301重定向会被浏览器长期缓存,建议用浏览器无痕模式验证规则是否生效。
内容的提问来源于stack exchange,提问作者fxcjahid
相关产品推荐
相关产品推荐

