我构建了一个简单的插件,可以用来快速创建一个“漂亮”的自定义 404 页面,该页面位于 WordPress 页面区域,可以轻松编辑。我最近发现,当 Google 网站管理员工具通知我软 404 增加时,我的插件没有发送正确的 404 not found 标头。正如您在下面的代码中看到的,我首先发送 404 Not found 标头,然后调用 301 永久重定向。
从概念上讲,我认为这应该可以工作(我已经看到它在其他 404 插件中使用过),但事实并非如此。我可以让 404 标头显示的唯一方法是,如果我在位置标头之后发送标头,但这会破坏目的,因为它显示一个空白页面。我不太确定如何在 WordPress 插件中最好地完成这项工作,并且我想确保我可以在 WordPress 的页面结构中完成这项工作。
这是功能:
if ($wp_query->is_404) {
$page_title = $this->options['404_page_title'];
$redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title)));
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 301 Moved Permanently");
header("Location:" . $redirect_404_url);
die;
}