我们在使用Yoast SEO或者All in One SEO等插件的时候,有时会发现它们生成的 XML站点地图(XML Sitemap)网址出现404错误。这是则可能需要添加服务器级别的伪静态重写规则。
添加重写规则
目前主流的服务器环境为 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;
如果你使用的是宝塔面板可以按照下图所示添加:
添加完成后,重启一下 Nginx,并在网站后台 设置 – 固定链接 界面,重新保存一下设置。
这样,xml地图就能正常显示了。