XMLサイトマップのベストプラクティス
サイトマップは「作って終わり」ではなく、正確に保ち続けることに価値があります。載せるべきもの、載せてはいけないもの、維持の仕方をまとめます。
良いXMLサイトマップの条件はシンプルです。インデックスさせたい正規URLだけを載せ、lastmodを正確に保ち、検索エンジンに確実に見つけてもらうこと。この3点さえ守れば、サイトマップは十分に仕事をします。この記事では、何を載せ、何を省き、どう維持するかを順に整理します。
載せるべきURLの3条件
サイトマップに含めてよいのは、次の3条件をすべて満たすURLだけです。
- 正規URLであること:canonicalタグが自分自身を指しているURLのみ。パラメータ付きの重複ページや正規化先が別にあるURLは除外します。
- インデックス可能であること:noindexが付いたページ、robots.txtでブロックされたページを載せると、クローラーに矛盾したシグナルを送ることになります。
- HTTP 200を返すこと:404やリダイレクトされるURLはクロールバジェットの無駄です。リダイレクト元ではなく、リダイレクト先の最終URLを載せてください。
逆に言えば、サイトマップは「サイトの全URL一覧」ではありません。検索結果に出したいページの厳選リストです。
lastmodは正確に、さもなくば省略を
<lastmod>はサイトマップで最も価値のあるフィールドですが、条件付きです。Googleは、値が一貫して正確である場合に限ってlastmodを利用すると明言しています。全ページに生成日時を一律で入れるような運用をすると、Googleはそのサイトのlastmodを信用しなくなります。コンテンツが実質的に変わったときだけ更新するか、正確に管理できないなら省略するのが正解です。
changefreqとpriorityは書いても無駄
はっきり言っておきます。Googleはchangefreqとpriorityを無視します。Bingもほぼ同様です。書いてもエラーにはなりませんが、クロールの頻度や優先度には一切影響しません。クロールの優先度を実際に左右するのは、lastmodの正確さ、内部リンクの構造、ページの品質です。テンプレートを簡潔に保つためにも、この2フィールドは削除して構いません。
神話と現実
| よくある神話 | 現実 |
|---|---|
| priorityを1.0にすれば重要ページが優先される | Googleはpriorityを無視する。内部リンクとlastmodが実質的なシグナル |
| changefreqをdailyにすれば毎日クロールされる | changefreqも無視される。クロール頻度は品質と更新実績で決まる |
| サイトマップに載せれば必ずインデックスされる | サイトマップは発見の補助であり、インデックスの保証ではない |
| 全URLを載せるほど効果的 | 非正規・noindex・エラーURLの混入は逆効果 |
| lastmodは毎回現在時刻でよい | 不正確なlastmodは学習され、無視されるようになる |
サイズ上限と分割、gzip
1ファイルの上限はURL 50,000件、非圧縮50 MBです。どちらかに近づいたら、サイトマップを分割してサイトマップインデックスにまとめます(詳細はサイトマップインデックスのガイドを参照)。また、サイトマップはgzip圧縮(.xml.gz)で配信できます。転送量は減りますが、上限の50 MBは非圧縮時のサイズに適用される点に注意してください。
検索エンジンへの通知方法
確実なのは次の2つを併用することです。
- robots.txtでの自動発見:robots.txtに次の1行を追加すると、すべてのクローラーがサイトマップを自動発見できます。
Sitemap: https://example.com/sitemap.xml - 各ツールへの登録:Google Search Consoleの「サイトマップ」メニューと、Bing Webmaster Toolsの両方に登録します。登録すると処理状況とエラーを継続的に監視できます。
再生成の頻度:動的か静的か
サイトマップはコンテンツと同期している必要があります。更新頻度の高いサイト(ECサイト、ニュース、UGC)では、リクエスト時またはコンテンツ更新時に生成する動的サイトマップが適しています。更新が週数回程度の静的サイトなら、ビルドやデプロイのたびに再生成すれば十分です。避けるべきは「一度生成したまま放置」で、削除済みページが残り、新規ページが載らないサイトマップは、時間とともに害の方が大きくなります。
運用チェックリスト
- 正規・インデックス可能・200のURLだけが載っているか
- lastmodは実際の更新日を反映しているか
- robots.txtにSitemap:行があるか
- Search ConsoleとBing Webmaster Toolsに登録済みか
- デプロイフローに再生成が組み込まれているか
現状の確認はWebDoctorのサイトマップ検証ツールで数秒で終わります。まずは現在のサイトマップをチェックしてみてください。