WordPress固定链接为kb的页面添加URL后缀时出现404错误求助
解决WordPress KB页面多级URL重写404问题
问题分析
你当前的重写规则仅匹配domain.com/kb/xxx这种单级子路径格式,无法覆盖domain.com/kb/84/92这类两级参数的URL,因此触发404错误。同时若未注册自定义查询变量,可能无法正常通过$_GET读取参数。
解决方案
1. 修改重写规则并注册查询变量
替换原有代码为以下内容:
function wdm_add_rewrite_rules() { // 注册自定义查询变量,让WordPress识别这两个参数 add_rewrite_tag('%kb_cat%', '([^/]+)'); add_rewrite_tag('%kb_seq%', '([^/]+)'); // 匹配两级参数的URL格式:kb/xxx/xxx add_rewrite_rule( '^kb/([^/]+)/([^/]+)/?$', 'index.php?pagename=kb&kb_cat=$matches[1]&kb_seq=$matches[2]', 'top' ); // 保留原有的单级参数匹配(可选,根据需求决定是否保留) add_rewrite_rule( '^kb/([^/]+)/?$', 'index.php?pagename=kb&kb_cat=$matches[1]&kb_seq=1', 'top' ); } add_action('init', 'wdm_add_rewrite_rules');
2. 刷新重写规则
登录WordPress后台,进入设置 → 固定链接,无需修改任何设置,直接点击「保存更改」按钮,WordPress会自动刷新重写规则,确保新规则生效。
3. 获取参数
在KB页面的PHP脚本中,可通过两种方式获取参数:
- 使用
$_GET(需确保查询变量已注册):$kb_cat = isset($_GET['kb_cat']) ? $_GET['kb_cat'] : ''; $kb_seq = isset($_GET['kb_seq']) ? $_GET['kb_seq'] : ''; - 更推荐使用WordPress原生函数
get_query_var():$kb_cat = get_query_var('kb_cat'); $kb_seq = get_query_var('kb_seq');
注意事项
- 确保固定链接设置不是「朴素」模式,否则重写规则无法生效。
- 后续修改重写规则后,必须再次刷新固定链接设置。
内容的提问来源于stack exchange,提问作者charlie
相关产品推荐
相关产品推荐

