You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义重写规则配置问题:带参数的single-staff URL报404

WordPress重写规则404问题排查与修复

你的代码存在以下关键问题,导致single-staff/12/abc格式的URL返回404:

1. 正则表达式匹配范围不精准

原规则的正则未用^(开头)和$(结尾)限定匹配边界,可能导致WordPress无法精准识别目标URL结构;同时冗余的第三个捕获组会干扰匹配逻辑,属于不必要的设计。

2. 参数匹配规则不合理

原正则使用*(允许空值)匹配参数,但你的目标URL中12和abc都是非空有效参数,应该用+(匹配至少一个字符)确保仅匹配符合要求的URL。

修正后的代码

add_filter('query_vars', 'gp_gotcha_queryvars' );
function gp_gotcha_queryvars( $qvars ){
    $qvars[] = 'id';
    $qvars[] = 'name';
    return $qvars;
}

add_action( 'init', 'gp_rewrite_url');
function gp_rewrite_url(){
    add_rewrite_rule(
        '^single-staff/([^/]+)/([^/]+)/?$',
        'index.php?pagename=single-staff&id=$matches[1]&name=$matches[2]',
        'top'
    );
    // 首次添加规则时取消注释执行一次,之后务必注释避免性能损耗
    // flush_rewrite_rules();
}

后续操作步骤

  1. 将修正后的代码替换到主题的functions.php文件中
  2. 临时取消注释flush_rewrite_rules();,保存文件后访问任意页面触发规则刷新,之后重新注释该行
  3. 或者登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」按钮(无需修改设置),手动刷新重写规则

参数验证

在single-staff页面模板中添加以下代码,可确认参数是否成功捕获:

<?php
$staff_id = get_query_var('id');
$staff_name = get_query_var('name');
echo "员工ID:{$staff_id},员工名称:{$staff_name}";
?>

内容的提问来源于stack exchange,提问作者Aayush Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:53:12