如何修复Yoast的WordPress SEO Sitemap 404错误

已经下载超过100万次,Yoast插件的WordPress SEO是迄今为止最好,最完整的WordPress插件。 虽然过去没有给我们任何问题,但对于一些用户来说却是一种痛苦。 最近,我们的一个客户遇到了由Yoast的WordPress SEO插件生成的Sitemaps 404错误的问题。 在尝试了几件事后,我们能够找出解决方案。 在这篇文章中,我们将向您展示如何修复Yoast的WordPress SEO插件中的网站地图404错误。

更新:重要的是你明白,这个问题很可能是由编码不佳的主题功能或插件造成的。 Yoast的插件在我们的网站上运行良好。 只是想明确这一点。

首先你应该尝试的是打开你的.htaccess文件(你可以从WordPress的SEO插件>编辑文件选项实际上做到这一点),只需在其中添加以下代码:

#WordPress搜索引擎优化 -  XML站点重写修复 RewriteEngine On
 RewriteBase /
 RewriteRule ^ sitemap_index.xml $ /index.php?sitemap=1 [L]
 RewriteRule ^([^ /] +?) -  sitemap([0-9] +)?。xml $ /index.php?sitemap=$1&sitemap_n=$2 [L] #结束WordPress的搜索引擎优化 -  XML站点重写修复 

对于大多数人来说这个问题已经解决 有人报告说,虽然这段代码解决了这个问题,但页面仍然在发送404响应头,这意味着Google网站管理员工具找不到它。 那么在我们客户的情况下,上面的解决方案并没有解决这个问题。

虽然不是首选,但我们别无选择,只能编辑核心插件文件来解决这个问题。 正如hadjedj.vincent所建议的,我们编辑了 类sitemaps.php 位于“/wp-content/plugins/wordpress-seo/inc/class-sitemaps.php”。

您需要查看函数init()代码,并使该部分如下所示:

/ **
 *初始化站点地图。 添加站点地图重写规则和查询var
 * /
 函数init(){
 全球$ wp_rewrite;
 $ GLOBALS ['wp']  - > add_query_var('sitemap');
 $ GLOBALS ['wp']  - > add_query_var('sitemap_n');
 add_rewrite_rule('sitemap_index.xml $','index.php?sitemap = 1','top');
 add_rewrite_rule('([^ /] +?) -  sitemap([0-9] +)?. xml $','index.php?sitemap = $ matches [1]&sitemap_n = $ matches [2]','top  ');
 $ wp_rewrite-> flush_rules();
 } 

基本上我们正在做的是添加全球$ wp_rewrite; 在所有已经存在的代码之前添加flush_rules。 通过在插件中添加这个,似乎解决了我们客户的网站上的404问题。 我们不知道为什么Yoast默认不这样做 ,但似乎有相当多的用户有这个网站地图404问题。 这个问题在评论中解释。

更新: 由于我们的一些用户报告,应用上述修复后,他们仍然需要取消Yoast的SEO插件中的站点地图选项,并保存其设置。 之后,重新检查站点地图的选项修复他们的错误。

如果你正在寻找这个问题,我们希望这个修复程序已经帮助你。