
多くの人がサイトのsitemap.xmlファイルを生成する際にGoogle XML Sitemapsプラグインを使用していると思います。Naibaも以前はそうでしたが、後にAll in One SEO Packの機能にsitemap生成コンポーネントが組み込まれていることに気づき、Google XML Sitemapsを使用しなくなりました。
先ほど突然sitemap.xmlが404になり、Google XML Sitemapsに切り替えても同様に404でした。原因は不明ですが、ここ数日ファイルキャッシュを調整していました(ルールを確認したところ、xmlに8日間のキャッシュが設定されていたために404エラーが発生したようです。xmlを除外すれば問題ありません。)以下にsitemap.xmlファイルの404エラー解決方法。
404が発生するケースは、ほぼ静的ルールの設定の問題です。
例えば、この記事を書いているときに、ファイルキャッシュをいじっていた際にxmlファイルもキャッシュされていたことに気づき、キャッシュルールを削除すると解決しました。
sitemap.xml 404エラーの解決方法
更安全な方法は、sitemap.xmlに擬似静的ルールを追加することです。
以下の2つの静的ルールはテスト済みで有効です。
Google XML Sitemapsプラグイン推奨のnginxルール
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last; rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
All in One SEO Packが推奨するルール
#rewrite rules for AIOSEOP XML Sitemap rewrite ^/sitemap.xml$ /index.php?aiosp_sitemap_path=root last; rewrite ^/sitemap_(.+)_(\d+).xml$ /index.php?aiosp_sitemap_path=$1&aiosp_sitemap_page=$2 last; rewrite ^/sitemap_(.+).xml$ /index.php?aiosp_sitemap_path=$1 last; rewrite ^/sitemap.xml.gz$ /index.php?aiosp_sitemap_path=root.gz last; rewrite ^/sitemap_(.+)_(\d+).xml.gz$ /index.php?aiosp_sitemap_path=$1.gz&aiosp_sitemap_page=$2 last; rewrite ^/sitemap_(.+).xml.gz$ /index.php?aiosp_sitemap_path=$1.gz last;
Nginx擬似静的ルールの追加方法
上記の静的ルールを仮想ホストのnginx設定ファイルに追加し、nginxを再起動するだけです。
LNMP一键パックのユーザーは、include rewrite/wordpress.conf; というコードの上に直接追加してください。
宝塔パネルのユーザーは、サイトの静的ルールに上記のコードを追加してください。
その他の注意事項
キャッシュプラグインを使用している場合は、以下の2つのページを例外に追加して、訪問者がキャッシュページを表示する際にエラーが発生しないようにしてください。
sitemap.xml
sitemap.xsl