起因
之前看到群友们在讨论 WordPress 这方面的问题,以及看到了这篇文章。
推断
这个可能是直接到搜索引擎提交链接导致的。提交一个符合网址的搜索链接,然后让搜索引擎抓取。
但是 WordPress 搜索不到内容,还返回了 200,搜索引擎认为这个网址是有效的,就爬取了页面。
解决
既然 WordPress 搜索不到内容,那我们就不让它返回 200 就行了。
我们可以用 WordPress 的 template_redirect Hook,然后获取搜索页面,随后判断是否搜索到了内容,如果没有,那就返回 404。
代码
function search_404_fix_template_redirect()
{
if (is_search()) {
global $wp_query;
if ($wp_query->found_posts == 0) {
status_header(404);
}
}
}
add_action('template_redirect', 'search_404_fix_template_redirect');
你可以将上面的代码加入到主题的 functions.php 中。
如果你懒得加,可以到 WordPress 后台来使用以下方法。
插件
你也可以选择到 WordPress 后台,下载,安装并启用这个插件。
效果
可以看到,现在顺利的返回了 404。
但是如果主题使用了 Pjax,返回 404 的时候可能页面会刷新一下。
ヾ(≧∇≦*)ゝ
٩(ˊᗜˋ*)و