Wordpress add_rewrite_rule返回404状态,但产生页面

时间:2019-10-07 13:20:08

标签: wordpress http-status-code-404 response

我正在为Wordpress开发一个插件,该插件利用了自定义的永久链接。

我这样使用add_rewrite_rule()
add_rewrite_rule('^collection/sku/([^/]+)/?$', 'index.php?pagename=single_item&sku=$matches[1]', 'top');

当我转到/collection/sku/123之类的URL时,它显示正常,但是我在检查器中注意到它返回404状态。我以前从未见过这种情况,我有点困惑如何获取404,但仍然显示似乎没有问题的页面。

使用Facebook调试器,我得到相同的结果。它说有一个404响应代码,但仍会抓取所有信息。

我确实在初始化过程结束时致电flush_rewrite_rules()

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,经过大量研究后我发现了一个解决方案,也许不是正确的解决方案,但它可以工作,现在返回200状态代码而不是404。

在为我添加的页面返回正确模板的函数中:

status_header(200);

整个示例:

add_filter('template_include', 'include_template');
    public function include_template( $template )
    {
        $page = get_query_var('pagename');

        if ( $page == 'participantes')
        {
          status_header(200);
          return trailingslashit( dirname( __FILE__ ) ) . 'page-participantes.php';
        }

        return $template;
    }