WordPressでXMLサイトマップが重複して見える場合は、検索エンジンへ案内する主サイトマップを1系統に決めるのが基本です。よくあるのは、WordPress標準の「/wp-sitemap.xml」と、SEOプラグインが出力する「/sitemap_index.xml」などが同時に利用できる状態です。
ただし、XMLファイルが複数あること自体は異常ではありません。投稿・固定ページ・タクソノミーなどを種類別に分けたり、URL数に応じて分割したりする構造は通常の運用です。確認すべきなのは、複数の生成元が同じURLを出力し、Search Consoleやrobots.txtから重複して案内されていないかです。
不要なサイトマップを止める前に、利用中のSEOプラグイン、サイトマップ設定、robots.txtの内容を控え、可能であればバックアップを取得してください。SEOプラグイン本体を安易に削除すると、titleタグ、meta description、noindex、構造化データなど、サイトマップ以外の設定まで失うおそれがあります。
まずは「重複」か正常な分割かを確認する
WordPressのXMLサイトマップは、複数のXMLファイルで構成されることがあります。対応が必要なのは、単にファイルが多い場合ではなく、別の生成機能が同じ公開URL群を出力している場合です。Googleは複数のサイトマップやサイトマップインデックスを受け付けているため、URLが複数あるだけでペナルティになるわけではありません。
WordPress標準のXMLサイトマップは、通常「/wp-sitemap.xml」にサイトマップインデックスを出力します。インデックスの配下には、投稿・固定ページ・タクソノミー・ユーザーなど、コンテンツの種類ごとの子サイトマップが並びます。この分割は標準的な構造です。
出典:Make WordPress Core「Merge Announcement: Extensible Core Sitemaps」
| 確認した状態 | 判断 | 基本対応 |
|---|---|---|
| 1つのインデックスから投稿・固定ページ別のXMLへ分かれている | 正常な分割 | 親インデックスを送信します |
| 投稿用XMLが複数に分かれている | URL数による正常な分割の可能性 | 親インデックスで管理します |
| 標準機能とSEOプラグインが同じ投稿・固定ページを別々に出力している | 整理を検討する状態 | 残す生成元を選びます |
| 画像・動画・ニュース・外部ECなど対象が異なるXMLがある | 意図的な複数運用の可能性 | 掲載URLと案内経路を確認します |
Googleの仕様では、1つのサイトマップファイルに含められるのは最大5万URL、または非圧縮で50MBまでです。大規模サイトで複数ファイルになることは珍しくありません。整理の目的はファイル数を減らすことではなく、管理方針と異なる重複をなくすことです。
出典:Google Search Central「Build and submit a sitemap」
生成元・掲載URL・案内先をこの順番で調べる
設定を変更する前に、次の4項目を確認すると、停止すべき機能を誤りにくくなります。
- ブラウザで「/wp-sitemap.xml」「/sitemap_index.xml」など、見つかったサイトマップ候補を開きます。
- WordPress管理画面で、SEOプラグインとサイトマップ専用プラグインのXMLサイトマップ設定を確認します。
- 各インデックスから子サイトマップを開き、投稿・固定ページ・商品ページなどがどちらに含まれるか比べます。
- Google Search Consoleの「サイトマップ」と、サイトURL末尾に「/robots.txt」を付けたURLを確認します。
HTMLサイトマップとXMLサイトマップは別物です。ユーザー向けのページ一覧であるHTMLサイトマップは、XMLサイトマップを停止しても残ることがあります。ブラウザ上の一覧ページではなく、XML形式のインデックスやURL一覧を確認してください。
残すサイトマップは、公開設定を管理している場所で選ぶ
WordPress標準機能とSEOプラグインのどちらが常に優れている、ということはありません。投稿タイプ、タクソノミー、noindexなどの検索表示方針をどこで管理しているかを基準に決めます。採用後は、サイトマップの管理方法を一つに集約することが重要です。
標準XMLサイトマップを選びやすいケース
投稿と固定ページが中心で、サイトマップの掲載対象を細かく制御する必要が少ないサイトでは、WordPress標準のXMLサイトマップで足りる場合があります。標準機能を使う場合は「/wp-sitemap.xml」が開けることと、必要な公開URLが子サイトマップに含まれることを確認してください。
なお、WordPressの「設定」→「表示設定」で「検索エンジンがサイトをインデックスしないようにする」が有効な場合、標準XMLサイトマップは無効になることがあります。開発・検証環境を本番へ移行した直後は、特に設定の戻し忘れを確認しましょう。
出典:Developer.WordPress.org「WP_Sitemaps::sitemaps_enabled()」
SEOプラグイン側を選びやすいケース
カスタム投稿タイプ、商品ページ、タクソノミーごとの検索表示設定をSEOプラグインで管理している場合は、同じプラグインのサイトマップを残すほうが整合性を取りやすいでしょう。noindexにする対象とサイトマップに載せる対象を、近い設定画面で確認できるためです。
たとえばYoast SEOは、XMLサイトマップ機能を有効にするとWordPress標準XMLサイトマップを自動で無効化する仕様を案内しています。一方、すべてのプラグインが同じ挙動とは限りません。Rank Mathなども独自のサイトマップインデックスを出力するため、URL名だけで判断せず、実際の出力と公式ドキュメントを確認してください。
出典:Yoast「Yoast SEO settings: Site features」
出典:Rank Math「How to Configure Sitemaps in Rank Math」
複数のサイトマップを残してよいケース
投稿数が多いことによる分割、画像・動画・ニュース用サイトマップ、別システムが管理する商品URL用サイトマップなどは、対象URLが重ならなければ併用できます。この場合も、サイトマップには検索結果に表示したい正規URLを載せるのが原則です。
httpとhttps、wwwあり・なし、末尾スラッシュの有無が混在していないかも確認してください。canonicalが別URLを指すページ、noindexページ、削除済みURLが大量に含まれる場合は、単なる重複ではなく、公開設定またはSEO設定の見直しが必要です。
出典:Google Search Central「Build and submit a sitemap」
不要な生成元を止め、残すサイトマップを確認する手順
安全な順番は、「残す側の正常動作を確認してから、不要な側を停止する」です。先にプラグインを削除したり、コードを追加したりすると、必要なサイトマップまで失う可能性があります。
SEOプラグインのサイトマップを止めて標準機能を使う場合
SEOプラグインの設定画面で、XMLサイトマップ機能だけを無効にします。SEOプラグイン本体の停止や削除を先に行う必要はありません。title、meta description、canonical、noindex、構造化データをプラグインが管理している場合、削除には別途移行作業が必要です。
設定変更後は「/wp-sitemap.xml」を開き、必要な投稿タイプの子サイトマップが表示されるか確認します。標準機能が有効でも、テーマやプラグイン、独自コードの影響で出力が変わることがあるため、想定どおりのURLが含まれているかまで確認してください。
WordPress標準を止めてSEOプラグインを使う場合
利用中のプラグインが標準サイトマップを自動停止しない場合は、WordPress標準XMLサイトマップを無効にする方法を検討します。WordPressでは「wp_sitemaps_enabled」フィルターにより、標準XMLサイトマップの有効・無効を変更できます。
add_filter( 'wp_sitemaps_enabled', '__return_false' );
このコードは、更新で消える可能性があるテーマ本体のfunctions.phpではなく、保守できるカスタムプラグインやmu-pluginで管理するほうが安全です。PHP編集に不安がある場合は、制作会社や保守担当者に依頼してください。標準機能を無効にすると該当URLは404になります。
出典:Developer.WordPress.org「WP_Sitemaps::sitemaps_enabled()」
停止後はキャッシュを削除して実際の応答を確認する
設定変更後は、残すサイトマップがブラウザで開けること、子サイトマップに必要な公開URLが含まれること、停止したURLが意図どおりに取得できなくなったことを確認します。管理画面にログインした状態だけではなく、シークレットウィンドウなどでも確認すると、ログイン状態やブラウザキャッシュの影響を避けやすくなります。
キャッシュプラグイン、サーバーキャッシュ、CDNが古いXMLを返すこともあります。設定変更が反映されない場合は、サイトマップ関連のキャッシュを削除してから再確認します。キャッシュが原因でサイトマップが更新されない場合があることは、Yoastも案内しています。
出典:Yoast「Why the Yoast SEO sitemap does not update in WordPress」
Search Consoleとrobots.txtの案内先も更新する
サイトマップの生成機能を整理しても、Google Search Consoleやrobots.txtに古いURLが残っていれば、以前の案内経路は残ります。採用したサイトマップインデックスに合わせて、送信先とSitemap行を更新してください。
Search Consoleでは採用した親インデックスを送信する
Google Search Consoleの「サイトマップ」レポートでは、通常、投稿・固定ページなどを束ねる親インデックスを送信します。子サイトマップを個別に送信するより、親インデックスで管理するほうが変更時の確認がしやすくなります。
不要になった送信済みサイトマップは、Search Console上で削除して送信一覧を整理できます。ただし、Search Consoleから削除しても、Googleが旧URLや掲載URLを直ちに認識しなくなるわけではありません。サイト側の停止、robots.txtの更新、新しいサイトマップの送信を併せて行うことが大切です。
出典:Google Search Console ヘルプ「Sitemaps report」
robots.txtは現在採用しているサイトマップだけを案内する
「https://あなたのドメイン/robots.txt」を開き、「Sitemap:」で始まる行を確認します。旧サイトマップのURLが残っている場合は、採用したインデックスURLへ更新します。
Sitemap: https://example.com/sitemap_index.xml
Search Consoleへの送信とrobots.txtの指定は併用できます。robots.txtには複数のSitemap行を記載できますが、重複した生成元を整理する目的なら、正規の案内先だけを残すのが分かりやすい運用です。ホスティングサービスやセキュリティプラグインがrobots.txtを動的に生成している場合は、編集場所を特定してから変更してください。
出典:Google「Create and Submit a robots.txt File」
重複を防ぐための最終チェック
XMLサイトマップの重複を防ぐには、テーマ変更、SEOプラグインの切り替え、サイト移転、バックアップからの復元後に、生成元と案内先を確認する習慣が有効です。次の項目がそろっていれば、管理上の混乱を抑えられます。
- XMLサイトマップを出力するWordPress機能・プラグインを把握している
- 「/wp-sitemap.xml」とプラグイン側のサイトマップURLを確認した
- 採用するサイトマップインデックスを決めた
- Search Consoleでは採用したインデックスを送信している
- robots.txtに古いサイトマップURLが残っていない
- キャッシュ削除後も、残すXMLサイトマップを取得できる
- 正常なファイル分割と、別生成元による重複を区別できている
XMLサイトマップは、検索エンジンにクロール対象の候補を伝える手段であり、送信だけでインデックス登録や検索順位を保証するものではありません。それでも、公開方針に合う正規URLを安定して案内するために、サイトマップの生成元と送信先をそろえることは重要です。