WordPress自定义URL重写规则无效问题排查求助
排查你的WordPress URL重写规则失效问题
你的思路是对的,但有几个细节没处理好,加上WordPress的重写规则缓存机制,才导致规则没生效。我给你拆解问题并给出修正方案:
1. 必须刷新重写规则缓存
WordPress会把重写规则缓存起来,你添加新规则后必须手动刷新,否则新规则不会生效。操作步骤:
- 登录WordPress后台,进入「设置」→「固定链接」
- 不需要修改任何设置,直接点击「保存更改」即可刷新缓存
2. 修正代码里的两处正则错误
你的代码里有两个小问题,导致规则匹配异常:
add_rewrite_tag里的正则用了[^&]+,这里的&是HTML实体,在PHP代码里应该直接用&,改成[^&]+add_rewrite_rule里的.+是贪婪匹配,会匹配到斜杠,可能导致错误匹配,改成[^/]+来精准匹配不带斜杠的id值
修正后的完整代码:
add_action('init', 'dcc_setup_rewrites'); function dcc_setup_rewrites() { // 添加重写标签,修正正则中的&符号 add_rewrite_tag('%id%', '([^&]+)'); // 修正匹配规则,精准捕获无斜杠的id参数 add_rewrite_rule( '^alternatywy/([^/]+)/?$', 'index.php?page_id=8286&id=$matches[1]', 'top' ); }
3. 额外检查项
- 确认
page_id=8286确实对应alternatywy页面,避免页面ID写错 - 如果还是没生效,暂时禁用其他SEO类或重写相关的插件,排查是否有规则冲突
- 切换到默认主题(比如Twenty Twenty-Four)测试,排除主题的重写规则干扰
按照上面的步骤操作后,应该就能让http://example.com/alternatywy/getresponse正常映射到原URL了。
内容的提问来源于stack exchange,提问作者Daniel Koczuła
相关产品推荐
相关产品推荐

