wordpress - Wordpress add_rewrite_rule 返回 404 状态但产生一个页面
问题描述
我正在为 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()
在初始化过程结束时调用。
解决方案
我遇到了同样的问题,看了很多后我找到了一个解决方案,也许不是正确的,但它可以工作,现在返回 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;
}
推荐阅读
- android-emulator - “显示 Taps”选项在 LDPlayer 上不起作用?
- php - 使用 PHP 解析非标准 xml
- javascript - 创建目录中所有页面的链接列表
- python - 进程在 Tkinter HtmlFrame 中以退出代码 -1073741819 (0xC0000005) 完成
- python - 无法安装 pip,无法获取 virtalenv
- r - 使用 4 个坐标作为输入创建带有 geom_mark_rect 的阴影矩形?
- arrays - 在 Flutter 中的数组内搜索
- mongodb - Mongoose 使用子文档值更新子文档数组
- flutter - Flutter:AnimatedContainer的基于child宽度的动画
- windows-7 - Win 7 ESU - 2 月以后更新 SCCM 部署问题