2026年8月18日

2026年8月18日

Yoast SEOでXMLサイトマップが生成されない・404になるときの原因と直し方

Yoast SEOのサイトマップが表示されない原因は、多くの場合「機能がオフ」「リライトルールが古い」「サーバーやキャッシュが sitemap_index.xml を横取りしている」「別のプラグインとサイトマップが二重になっている」のどれかです。この記事では、ブラウザとURLの確認から始めて、管理画面の設定、パーマリンクの再保存、サーバー設定、キャッシュ、XMLエラーの順に原因を切り分け、Search Consoleへ正しく送信できる状態まで戻す手順を説明します。

まず症状を確かめる

最初に、ブラウザで次のURLを直接開きます(example.com は自分のドメインに置き換えます)。

https://example.com/sitemap_index.xml

Yoast SEOが出力するサイトマップの入口はこの sitemap_index.xml で、ここから post-sitemap.xml や page-sitemap.xml などの個別サイトマップにリンクされます。WordPressコアにも5.5から標準のサイトマップ(/wp-sitemap.xml)がありますが、Yoast SEOのサイトマップを有効にしている間はコアのサイトマップは使われず、Yoast側へ転送される動きになります。Search Consoleに送信するのは sitemap_index.xml の方です。

開いた結果によって、疑う場所が変わります。

  • 404(ページが見つかりません)になる: 機能がオフ、リライトルールが反映されていない、サーバー設定がWordPressに処理を渡していない、のいずれかが濃厚です。
  • 真っ白、または「XML解析エラー」が出る: テーマやプラグインがXMLの前に余計な文字を出力している可能性があります。
  • 表示はされるが、記事が載っていない・一部の投稿タイプが無い: 検索結果への表示設定(noindex)で除外されているケースが大半です。
  • 古い内容のまま更新されない: ページキャッシュやCDNのキャッシュを疑います。

HTTPステータスは、ターミナルから次のように確認するとブラウザのキャッシュに左右されません。

curl -I https://example.com/sitemap_index.xml

HTTP/2 200 と content-type: text/xml 系が返れば、サイトマップ自体は生成されています。404や301が返る場合は、以下の手順で原因を絞り込みます。

作業前にバックアップを取る

この後の手順ではパーマリンクの再保存やプラグインの停止を行うため、先にファイルとデータベースのバックアップを取っておきます。.htaccess は1行の誤りでサイト全体が500エラーになるので、編集前にコピーを手元に保存します。

手順1:サイトマップ機能がオンになっているか確認する

Yoast SEOの設定画面で、XMLサイトマップの機能が有効になっているかを見ます。(2026年10月現在)の管理画面では、左メニューの「Yoast SEO」から「設定」を開き、サイト全体の機能を切り替える画面(「サイトの機能」などの名称)にXMLサイトマップの項目があります。画面構成はバージョンによって変わるため、見当たらない場合は設定画面内の検索で「サイトマップ」と入力すると早く見つかります。

すでにオンになっている場合でも、一度オフにして保存し、もう一度オンにして保存する操作が有効なことがあります。この切り替えでYoast SEOがサイトマップ用のリライトルールを登録し直すため、移行やプラグイン更新の後にルールが抜けていた状態が解消されることがあるからです。

手順2:パーマリンク設定を再保存する

sitemap_index.xml は実在するファイルではなく、WordPressのリライトルールで生成されるURLです。サーバー移転、プラグインの入れ替え、データベースの移行の後などは、このリライトルールが古いまま残り、404になることがあります。

管理画面の「設定」→「パーマリンク」を開き、何も変更せずに「変更を保存」を押します。これだけでリライトルールが作り直されます。パーマリンク構造が「基本」(?p=123 形式)のままになっている場合は、「投稿名」など他の形式に変更しておきます。きれいなURLを使わない設定では、sitemap_index.xml というURLが期待どおりに動かないことがあります。

WP-CLIが使える環境なら、次のコマンドで同じ処理と確認ができます。

wp rewrite flush
wp rewrite list --format=csv | grep sitemap

2行目の結果に sitemap_index.xml を含むルールが表示されれば、WordPress側の登録は正常です。それでも404になる場合は、WordPressに処理が届く前の段階、つまりサーバー設定に原因があります。

手順3:サーバー設定がWordPressに処理を渡しているか確認する

Apacheの場合、WordPress標準の .htaccess(# BEGIN WordPress から # END WordPress までのブロック)が正しく書かれていれば、存在しないファイルへのアクセスはWordPressに渡され、サイトマップも表示されます。このブロックが消えている、あるいは他の記述の後ろに押し出されている場合は、パーマリンクの再保存で書き戻されるか確認します。書き戻されないときは、.htaccess にWordPressから書き込む権限が無い可能性があります。

Nginxの場合は注意が必要です。一般的な try_files $uri $uri/ /index.php?$args; の設定であれば問題ありませんが、画像やXMLなどの静的ファイルを高速に配信するために「.xml で終わるURLはファイルとして返す」という location ブロックを書いていると、実在しない sitemap_index.xml は404になります。XMLを特別扱いする記述があれば、サイトマップのURLをWordPressにフォールバックさせるよう修正します。設定ファイルを触れないレンタルサーバーでは、サポートに「XMLへのリクエストがWordPressに渡っているか」を問い合わせるのが近道です。

手順4:ほかのサイトマップと重複していないか確認する

サイトマップを出力するプラグインを複数有効にしていると、URLの取り合いになります。All in One SEO、Rank Math、XML Sitemapsなどのプラグインを過去に入れていないか、「プラグイン」画面で確認します。Yoast SEOでサイトマップを出すと決めたら、他のプラグインのサイトマップ機能はオフにします。

もう一つ見落としやすいのが、サイトのルートディレクトリに実ファイルとして sitemap.xml や sitemap_index.xml が置かれているケースです。以前のプラグインや手作業で生成したファイルが残っていると、サーバーはWordPressよりも先にそのファイルを返します。FTPやファイルマネージャーで wp-config.php と同じ階層を確認し、古いサイトマップファイルがあれば、バックアップを取ったうえで別名に変更して動作を見ます。

手順5:XMLエラーや白い画面はプラグインの競合を疑う

「XML宣言はドキュメントの先頭にのみ記述できます」のようなエラーが出る場合、XMLの前に空白や改行、エラーメッセージが出力されています。よくある原因は次のとおりです。

  • テーマの functions.php の先頭の <?php より前、または末尾の ?> の後ろに空行がある
  • 有効化しているプラグインがPHPの警告(Warning・Notice)を画面に出している
  • サイトマップの出力を書き換える独自コードが追加されている

切り分けには、Health Checkプラグインのトラブルシューティングモードを使うと、訪問者には影響を与えずに自分の画面だけでプラグインを停止できます。Yoast SEO以外を停止した状態でサイトマップが正常に表示されれば、残りを1つずつ有効化して原因を特定します。テーマが原因の場合は、一時的にデフォルトテーマ(Twenty Twenty-Five など)に切り替えて確認します。

手順6:記事が載らないときはnoindex設定を見る

サイトマップは表示されるのに記事や固定ページが含まれない場合、Yoast SEOの仕様どおりに除外されている可能性が高いです。Yoast SEOは「検索結果に表示しない」と設定したコンテンツをサイトマップに載せません。確認する場所は次の3つです。

  • Yoast SEOの設定で、投稿タイプやタクソノミーごとの「検索結果に表示する」設定がオフになっていないか
  • 個別の記事の編集画面で、Yoast SEOの詳細設定から noindex を指定していないか
  • 「設定」→「表示設定」の「検索エンジンがサイトをインデックスしないようにする」にチェックが入っていないか

3つ目は開発中に入れたまま公開する例が多く、サイト全体が検索エンジンから外れます。

投稿数が非常に多いサイトでは、個別サイトマップ1つあたりの件数を減らすと生成時のタイムアウトを避けられることがあります。件数はフィルター wpseo_sitemap_entries_per_page で変更できます。

add_filter( 'wpseo_sitemap_entries_per_page', function () {
	return 500;
} );

手順7:キャッシュを除外する

キャッシュ系プラグインやCDNが、404になっていた時点のレスポンスや古いサイトマップを保存し続けることがあります。設定を直したのに結果が変わらない場合は、キャッシュプラグインとCDNのキャッシュを削除してから再確認します。そのうえで、sitemap を含むURLをページキャッシュの対象から外しておくと、記事を追加したときにサイトマップがすぐ更新されます。

Search Consoleへの送信と確認

正常に表示されたら、Google Search Consoleの「サイトマップ」から sitemap_index.xml を送信します。送信直後に「取得できませんでした」と出ても、時間をおくと更新されることが多いです。数日たってもエラーなら、curl -I で200以外が返っていないかを見直します。

まとめ

  • まず sitemap_index.xml を直接開き、404・XMLエラー・記事が載らない・更新されない、のどの症状かを見分ける
  • 機能のオンオフ切り替えとパーマリンクの再保存で、リライトルールを作り直す
  • Nginxの静的ファイル設定、ルートに残った古いサイトマップファイル、他のSEOプラグインとの重複を確認する
  • XMLエラーは余計な出力が原因のことが多く、トラブルシューティングモードで競合を切り分ける
  • 記事が載らないときはnoindex設定、更新されないときはキャッシュを確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲