解决Yoast SEO 插件生成的XML站点地图404错误

资讯11个月前发布 iowen
101 0 0

Yoast SEO 是安装量超过500万的WordPress SEO插件,以其可读性分析和SEO分析而闻名。更多介绍请看《强大的WordPress SEO插件:Yoast SEO》。

在测试 Yoast SEO 的时候,倡萌发现它生成的 XML站点地图(XML Sitemap)网址出现404错误。相信不少朋友也会遇到,官方针对这个问题也给出了解决方案。

当您启用站点地图功能时,我们的插件会动态生成XML站点地图。



在某些情况下,如果在加载XML网站地图时收到服务器404错误或页面错误,则可能需要添加服务器级别的伪静态重写规则。

如何知道是否需要添加重写规则?

Yoast SEO XML站点地图网址有两种:

  1. 漂亮永久链接:example.com/sitemap_index.xml

  2. 非漂亮永久链接:example.com/?sitemap=1

如果您可以使用【非漂亮永久链接】加载地图,而不能使用【漂亮永久链接】加载并查看站点地图,说明您的服务器未设置重写规则,因此,您需要添加重写规则。

添加重写规则

目前主流的服务器环境为 Apache 和 Nginx,不同的环境添加的规则会不一样,如果不确定使用哪个,请与您的主机提供商联系。 

使用Apache服务器

您应该编辑网站根目录的 .htaccess文件(此处提供入门指南),并在下面的主要WordPress重写规则之前添加以下代码。如果您不确定如何执行此操作,则联系主机提供商可以为您提供帮助。

如果你的WordPress是安装在更目录,可以使用下面的规则:

# Yoast SEO - XML Sitemap Rewrite Fix
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L]
RewriteRule ^locations.kml$ /index.php?sitemap=wpseo_local_kml [L]
RewriteRule ^geo_sitemap.xml$ /index.php?sitemap=geo [L]
RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 [L]
RewriteRule ^([a-z]+)?-?sitemap.xsl$ /index.php?yoast-sitemap-xsl=$1 [L]
# END Yoast SEO - XML Sitemap Rewrite Fix

如果您在子文件夹中运行WordPress,则可能必须修改此设置。例如,如果您在名为/wordpress/的子文件夹中运行它, 就需要使用下面的规则:

# WordPress SEO - XML Sitemap Rewrite Fix - for subfolder install
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^sitemap_index.xml$ /wordpress/index.php?sitemap=1 [L]
RewriteRule ^locations.kml$ /wordpress/index.php?sitemap=wpseo_local_kml [L]
RewriteRule ^geo_sitemap.xml$ /wordpress/index.php?sitemap=wpseo_local [L]
RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /wordpress/index.php?sitemap=$1&sitemap_n=$2 [L]
# END WordPress SEO - XML Sitemap Rewrite Fix

添加了规则以后,可能需要重启一下 Apache,以便规则生效。

使用Nginx服务器

这是您在NGINX服务器上可能需要的重写规则的示例。如果不确定在何处添加这些规则,请联系您的网络主机或服务器管理员以获取帮助。

如果你仅仅安装了 Yoast SEO 插件,只需要添加在站点的Nginx配置文件中,在WordPress伪静态规则的下方添加以下规则即可:

# Rewrites for Yoast SEO XML Sitemap
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

如果你使用的是宝塔面板可以按照下图所示添加:



如果你购买了高级版 Yoast SEO Premium,并且同时安装了它的附带扩展,比如News SEO、Local SEO、Video SEO 等,那你就需要使用下面的完整规则代码替代:

#Yoast SEO Sitemaps
location ~ ([^/]*)sitemap(.*).x(m|s)l$ {
## this rewrites sitemap.xml to /sitemap_index.xml
rewrite ^/sitemap.xml$ /sitemap_index.xml permanent;
## this makes the XML sitemaps work
rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?yoast-sitemap-xsl=$1 last;
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
## 以下规则用于高级扩展
## News SEO
rewrite ^/news-sitemap.xml$ /index.php?sitemap=wpseo_news last;
## Local SEO
rewrite ^/locations.kml$ /index.php?sitemap=wpseo_local_kml last;
rewrite ^/geo-sitemap.xml$ /index.php?sitemap=wpseo_local last;
## Video SEO
rewrite ^/video-sitemap.xsl$ /index.php?yoast-sitemap-xsl=video last;
}

如果添加规则以后,还没有解决问题,尝试重启一下 Nginx,并在网站后台 设置 – 固定链接 界面,重新保存一下设置。


© 版权声明

相关文章

暂无评论

暂无评论...