【问题标题】:WordPress page shows 404 when adding to URL添加到 URL 时 WordPress 页面显示 404
【发布时间】:2022-12-15 02:21:49
【问题描述】:

我正在向我的 PHP 脚本添加重写规则,该脚本包含在具有永久链接的 WordPress 页面中知识库

所以我可以访问 domain.com/kb 并显示该页面。

function wdm_add_rewrite_rules() {
    add_rewrite_rule( '^kb/([^/]+)/?$', 'kb?kb_cat=$matches[1]&kb_seq=1', 'top');
}
add_action('init', 'wdm_add_rewrite_rules');

但是当我访问 url 中包含其他字符串的页面时,我得到了 404。

所以当我访问 domain.com/kb 时显示正确的页面,然后访问 domain.com/kb/84/92,它显示 404

我只需要能够读取我的 PHP 脚本中的其他 url 参数,例如 $_GET["kb_cat"]

【问题讨论】:

  • 请尝试在 .htaccess 文件中添加重写规则
  • 您是否在服务器上启用了 mod 重写?

标签: php wordpress


【解决方案1】:
function wdm_add_rewrite_rules() {
    add_rewrite_rule( '^kb$', 'index.php?kb_cat=$matches[1]&kb_seq=1', 'top');
}
add_action('init', 'wdm_add_rewrite_rules');

更进一步并使用参数:

function add_query_vars_filter( $vars ){
    $vars[] = "kb_cat";
    $vars[] = "kb_seq";
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

然后加载自定义模板文件:

function include_custom_template($template){

    if(get_query_var('kb_cat') && get_query_var('kb_seq')){
        $template = get_template_directory() ."/my-custom-template.php";
    } 
   
    return $template;    
}

add_filter('template_include', 'include_custom_template');

添加到您的functions.php后,转到“设置”>“永久链接”并点击“保存更改”以重置刷新规则

【讨论】:

  • 我刚刚添加了 add_query_vars_filter 函数并刷新了永久链接,但我仍然收到 404。我不知道将代码添加到 functions.php 中是否会有所不同,因为我有一个包含页面内容的 php 脚本然后我在我的 wordpress 页面中使用一个 include 插件
  • 您是否为自定义页面正确提取了模板?
  • 我正在使用一个名为“IncludeMe”的插件,它包含一个 PHP
  • “kb”页面将是什么文件?
  • kb 是 wordpress 中的页面 slug
【解决方案2】:

function include_custom_template($template){

    if(get_query_var('kb_cat') && get_query_var('kb_seq')){
        $template = get_template_directory() ."/my-custom-template.php";
    } 
   
    return $template;    
}

add_filter('template_include', 'include_custom_template');

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习。你改变了什么,为什么?
【解决方案3】:

尝试这个:

function wdm_add_rewrite_rules() {
    add_rewrite_rule( '^kb/([^/]+)/?([^/]+)$', 'kb?kb_cat=$matches[1]&kb_seq=1', 'top');
}
add_action('init', 'wdm_add_rewrite_rules');

您可以在https://regex101.com/ 或任何其他类似在线网站上查看正则表达式是否匹配

【讨论】:

  • 仍然只是使用此代码的 404
  • 转到固定链接 -> 设置并单击保存而不修改页面中的任何内容。这可能是 wordpress 默认的 url 函数问题。
猜你喜欢
  • 2015-06-10
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2017-01-22
相关资源
最近更新 更多