2026年7月14日
2026年7月14日
WordPressのsitemap.xmlが404になるときの原因と再生成手順
WordPressのサイトマップが404になる原因の多くは、「見ているURLがサイトマップの実際の場所と違う」か「URLの書き換えルール(リライトルール)が古いまま」のどちらかです。WordPressのサイトマップは保存されたファイルではなく、アクセスのたびに生成される仕組みなので、「再生成」の実体はリライトルールとキャッシュを作り直すことです。この記事では、正しいURLの確認、404の原因の切り分け、サイトマップを再び表示させる手順、Search Consoleへの再送信までを説明します。
まず確認:サイトマップのURLは環境によって違う
/sitemap.xml が404でも、サイトマップ自体は別のURLで正常に出ていることがあります。何がサイトマップを出しているかで、URLが変わります。
- WordPress本体の標準サイトマップ(WordPress 5.5以降):
https://example.com/wp-sitemap.xml - Yoast SEO:
https://example.com/sitemap_index.xml - Rank Math:
https://example.com/sitemap_index.xml - All in One SEO:
https://example.com/sitemap.xml
SEOプラグインを入れていない場合、/sitemap.xml というURLはWordPress本体には存在しないため、404になるのが正常な動作です。SEOプラグインのサイトマップ機能を有効にすると、多くの場合は本体の標準サイトマップが自動的に止まり、プラグイン側のURLに切り替わります。使っているプラグインの設定画面に、実際のサイトマップURLが表示されているはずなので、そこから開いて確認してください。
また、ブラウザで https://example.com/robots.txt を開くと、WordPressが出力している仮想 robots.txt の末尾に Sitemap: 行としてサイトマップのURLが書かれていることがあります。これも現在のURLを知る手がかりになります。
404になる主な原因
リライトルールが更新されていない
サイトマップのURLは、WordPressのリライトルールによって処理されています。プラグインを有効化した直後や、サイトを移転・復元した直後は、このルールが古いまま残っていて404になることがあります。
.htaccess やNginxの設定がWordPressに処理を渡していない
Apacheでは、パーマリンク用の .htaccess の記述が消えていると、存在しないファイルへのリクエストがWordPressに届かず、サーバーが直接404を返します。Nginxでは、.xml で終わるURLを静的ファイルとして扱う location 設定があると、そこで404が返されてしまうことがあります。
「検索エンジンでの表示」で非表示を選んでいる
「設定」→「表示設定」の「検索エンジンがサイトをインデックスしないようにする」にチェックが入っていると、WordPress本体の標準サイトマップは無効になり、404を返します。制作中に入れたチェックを公開後に外し忘れているケースがよくあります。
サイトマップ機能が二重になっている
SEOプラグインを2つ同時に有効化していたり、SEOプラグインとサイトマップ専用プラグインを併用していたりすると、どちらが出力するかが不安定になります。片方がサイトマップを止め、もう片方は機能がオフ、という組み合わせになると、どこにもサイトマップが出ません。
キャッシュに404が残っている
一時的に404になったページが、キャッシュプラグインやCDNにそのまま保存されていると、原因を直しても404が表示され続けます。
原因を切り分ける手順
1. サーバーの応答を確認する
ブラウザのキャッシュに惑わされないよう、ステータスコードを直接確認します。
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap_index.xml
HTTP/2 200 や HTTP/1.1 200 OK なら正常です。301や302が返る場合は、Location: の転送先を確認します。ブラウザの開発者ツールの「ネットワーク」タブでも、ステータスコードと転送の流れを確認できます。
404のページの見た目も手がかりになります。テーマのデザインで「ページが見つかりません」と出ているならWordPressまでは届いており、WordPress内部の問題です。サーバー既定の簡素な404画面なら、.htaccess やNginxの設定でWordPressに届いていない可能性が高いです。
2. 標準サイトマップを書き換えなしのURLで開く
本体の標準サイトマップを使っている場合、https://example.com/?sitemap=index を開いてみます。これが表示され /wp-sitemap.xml だけが404なら、サイトマップ機能は動いていて、リライトルールかサーバー設定の問題だと判断できます。
3. WP-CLIで設定を確認する
WP-CLIが使える環境では、表示設定とリライトルールの状態を確認できます。
wp option get blog_public
wp rewrite list --format=csv | grep sitemap
blog_public が 0 なら、検索エンジンに表示しない設定になっています。リライトルールの一覧にサイトマップ関連の行が出てこなければ、ルールの作り直しが必要です。
4. プラグインの競合を確かめる
管理画面の「ツール」→「サイトヘルス」で重大な問題が出ていないかを見たうえで、Health Check & Troubleshooting プラグインのトラブルシューティングモードを使い、SEOプラグインだけを有効にした状態でサイトマップが開けるかを試します。これで表示されるなら、ほかのプラグイン(セキュリティ系、リダイレクト系、キャッシュ系など)との競合が疑われます。
サイトマップを再生成する手順
作業前に、サイトのファイルとデータベースのバックアップを取ってください。特に .htaccess やNginxの設定を編集する場合は、元のファイルをコピーしておくと元に戻せます。
1. パーマリンク設定を保存し直す
「設定」→「パーマリンク」を開き、何も変更せずに「変更を保存」を押します。これでリライトルールが作り直されます。WP-CLIなら次のコマンドで同じことができます。
wp rewrite flush
Apacheの環境で .htaccess に書き込みができない場合は、保存後の画面に .htaccess に書くべき内容が表示されるので、それを手動で反映します。
2. SEOプラグインのサイトマップ機能をオフ・オンする
Yoast SEO や Rank Math などを使っている場合は、プラグインの設定画面でXMLサイトマップ機能を一度オフにして保存し、再びオンにして保存します。そのあとでパーマリンク設定の保存をもう一度行うと、プラグインのルールが反映されやすくなります。サイトマップ機能を持つプラグインは1つに絞り、ほかのプラグインのサイトマップ機能は止めておきます。
3. Nginxの設定を見直す
Nginxでは、WordPressのURLを処理するために次のような記述が必要です。
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.xml$ のような静的ファイル向けの設定がある場合は、その中にも try_files $uri /index.php?$args; を入れて、ファイルが無いときにWordPressへ渡すようにします。設定を変えたら nginx -t で文法を確認してから再読み込みしてください。共用サーバーでNginxの設定を直接変えられない場合は、サーバー会社のサポートに相談します。
4. 古い静的ファイルとキャッシュを消す
以前使っていたプラグインが生成した sitemap.xml ファイルがサイトのルートに残っていると、新しいサイトマップより優先して表示されることがあります。不要なら別名に変えてから動作を確認し、問題なければ削除します。最後に、キャッシュプラグインとCDNのキャッシュを削除して、もう一度 curl で200が返るかを確認します。
Search Consoleへ送信し直す
正しいURLで200が返るようになったら、Google Search Console の「サイトマップ」から、現在のサイトマップURLを送信します。古いURL(たとえば以前のプラグインの /sitemap.xml)が登録されたままなら、削除して新しいURLに置き換えます。送信直後はステータスが「取得できませんでした」と表示されることがありますが、時間をおいて再確認してください(画面の表記は2026年10月現在のものです)。
まとめ
- WordPressのサイトマップは動的に生成されるため、「再生成」はリライトルールの作り直しとキャッシュの削除が中心です。
- 本体の標準サイトマップは
/wp-sitemap.xml、Yoast SEO と Rank Math は/sitemap_index.xmlなど、URLが環境ごとに違うので最初に確認します。 - 404の原因は、古いリライトルール、.htaccess やNginxの設定、検索エンジン非表示の設定、サイトマップ機能の重複、キャッシュが中心です。
- パーマリンク設定の保存、プラグインのサイトマップ機能のオフ・オン、サーバー設定の確認を行い、200が返ることを確認してから Search Console に送信します。