XML sitemap
sitemaps.org仕様に準拠したXMLサイトマップを作成し、検索エンジンがサイトコンテンツを効率的にインデックスできるようにします。
xmlsitemap
インストール
composer require 'drupal/xmlsitemap:^2.0'
composer require 'drupal/xmlsitemap:8.x-1.5'
composer require 'drupal/xmlsitemap:8.x-1.2'
概要
XML Sitemapは、sitemaps.orgプロトコルに準拠したサイトマップを自動的に作成します。これにより、サイト上のURLの構造化されたリストと、最終更新日時、更新頻度、相対的な優先度に関するメタデータを提供することで、検索エンジンが検索結果を最新の状態に保つのを支援します。
このモジュールは、Node、Taxonomyターム、ユーザー、メニューリンクなど、Drupalのすべてのコンテンツエンティティタイプをサポートしています。どのエンティティタイプとバンドルをサイトマップに含めるかを設定し、デフォルトの優先度と変更頻度を設定し、個々のアイテムでこれらの設定を上書きできます。
サイトマップはキャッシュされたXMLファイルとして生成され、検索エンジンのクローラーに直接提供されるため、多くのリンクを持つ大規模サイトでも最適なパフォーマンスを確保できます。
Features
- sitemaps.org仕様に準拠したXMLサイトマップを生成
- すべてのコンテンツエンティティタイプをサポート(Node、ユーザー、Taxonomyターム、メニューリンクなど)
- エンティティタイプとバンドルごとに含める/除外を設定可能
- コンテンツタイプごとにカスタマイズ可能な優先度(0.0-1.0)と変更頻度の設定
- きめ細かい制御のためのアイテムごとのサイトマップ設定の上書き
- コンテンツが変更されたときにcronによる自動的なサイトマップ再生成
- 50,000リンクを超えるサイト向けのサイトマップインデックスのサポート
- サイトマップファイルのGzip圧縮サポート
- ブラウザでサイトマップを表示するための人間が読めるXSLスタイルシート
- 言語ごとのサイトマップリンクを持つ多言語サポート
- robots.txtモジュールとの統合によるサイトマップ参照の自動追加
- Metatagモジュールとの統合によるnoindexコンテンツの除外
- サイトマップリンクデータをクエリするためのViews統合
- サイトマップの再生成と再構築のためのDrushコマンド
Use Cases
基本的なSEO設定
モジュールをインストールした後、Nodeエンティティタイプを有効にし、どのコンテンツタイプを含めるか(例:記事、ページ)を選択します。適切な優先度を設定します - 重要なランディングページは0.8-0.9、ブログ投稿は0.5-0.6、アーカイブページは0.3-0.4。cronを実行してサイトマップを生成し、Google Search Consoleに送信します。
複数のサイトマップを持つ大規模サイト
50,000以上のURLを持つサイトの場合、モジュールは複数のサイトマップチャンクを持つサイトマップインデックスを自動的に作成します。必要に応じて詳細設定でチャンクサイズを設定します。cron再生成を無効にし、パフォーマンス向上のためにトラフィックの少ない期間にDrushコマンドを使用することを検討してください。
多言語サイト
Languageモジュールが有効になっている場合、XML Sitemapは言語固有のサイトマップコンテキストを自動的に作成します。各言語は適切なhreflang属性を持つ独自のサイトマップを取得します。含まれるすべてのコンテンツタイプでコンテンツ翻訳が正しく設定されていることを確認してください。
Eコマース製品カタログ
サイトマップに含める製品エンティティタイプを有効にします。製品を高い優先度(0.7-0.8)に設定し、変更頻度をdailyまたはweeklyに設定します。アイテムごとの上書きを使用して、注目製品をブーストしたり、在庫切れのアイテムを降格させたりします。在庫に基づいて優先度を動的に調整するためにhook_xmlsitemap_link_alterの使用を検討してください。
特定のコンテンツの除外
コンテンツ編集フォームのアイテムごとのXML Sitemap設定を使用して、特定のアイテムを除外します。一括除外の場合は、バンドル設定を使用してコンテンツタイプ全体を無効にします。Metatagを使用している場合は、アイテムをnoindexに設定し、metatag除外オプションを有効にします。
カスタムリンク
XML Sitemap Customサブモジュールを有効にして、静的ファイル、外部マイクロサイト、レガシーURLなど、自動的に検出されないURLを追加します。カスタムリンクは同じ優先度と変更頻度の設定をサポートしています。
検索エンジンへの送信
XML Sitemap Enginesサブモジュールを有効にして、サイトマップが更新されたときに検索エンジンに自動的に通知します。Google送信を設定し、オプションで他の検索エンジン用のカスタムping URLを追加します。
Tips
- 現実的な優先度を設定する - コンテンツの重要性を区別するために0.0-1.0の範囲全体を使用する
- 変更頻度は希望のクロール頻度ではなく、実際の更新パターンに基づいて設定する
- デバッグを容易にするためにXSLスタイルシートオプションを使用する - ブラウザでsitemap.xmlを表示できる
- ステータスレポートでサイトマップのステータスを監視して、再生成やファイルサイズに関する警告を確認する
- 再生成タイミングをより良く制御するために、cronでDrushコマンドを使用することを検討する
- サイトマップの問題をデバッグするときは一時的に開発者モードを有効にする
- サイトマップに含めることを期待する前に、匿名ユーザーがコンテンツにアクセスできることを常にテストする
Technical Details
Admin Pages 6
/admin/config/search/xmlsitemap
すべてのXMLサイトマップを一覧表示するメイン管理ページ。サイトマップID、コンテキスト、リンク数、チャンク数、最終更新日時を表示します。個々のサイトマップを編集または削除する操作を提供します。
/admin/config/search/xmlsitemap/settings
再生成タイミング、出力形式、詳細オプションを含むグローバルなXML Sitemap設定を構成します。
/admin/config/search/xmlsitemap/entities/settings
XMLサイトマップに含めるエンティティタイプとバンドルを選択します。
/admin/config/search/xmlsitemap/settings/{entity}/{bundle}
特定のエンティティタイプバンドル(例:記事コンテンツタイプ)のXMLサイトマップ設定を構成します。
/admin/config/search/xmlsitemap/rebuild
すべてのコンテンツを再インデックスしてXMLサイトマップデータを完全に再構築します。初期インストール後または緊急時に使用してください。
/admin/config/search/xmlsitemap/add
特定のコンテキスト(例:別の言語用)で新しいXMLサイトマップを作成します。
権限 2
Hooks 6
hook_xmlsitemap_link_info
このモジュールが提供するリンクのタイプに関する情報を提供します。
hook_xmlsitemap_link_alter
保存前にサイトマップリンクのデータを変更します。
hook_xmlsitemap_element_alter
個々のサイトマップエントリのXML要素コンテンツを変更します。
hook_xmlsitemap_root_attributes_alter
サイトマップのルート要素属性を変更します。
hook_xmlsitemap_context_info
利用可能なサイトマップコンテキストを定義します。
hook_xmlsitemap_context
現在のコンテキスト値を提供します。
Drush Commands 3
drush xmlsitemap:regenerate
XMLサイトマップファイルを再生成します。コンテンツの変更後にキャッシュされたサイトマップファイルを再構築するために使用します。
drush xmlsitemap:rebuild
すべての可能なXMLサイトマップデータをダンプして再処理し、その後ファイルを再生成します。サイトマップリンクデータの完全な再構築に使用します。
drush xmlsitemap:index
未インデックスのXMLサイトマップリンクを処理します。まだサイトマップに追加されていない新しいコンテンツをインデックスします。
Troubleshooting 6
cronを実行してサイトマップファイルを生成してください。サイトマップキャッシュディレクトリが書き込み可能であることを確認してください。少なくとも1つのエンティティタイプバンドルが含有に有効になっていることを確認してください。
サイトマップエンティティ設定でコンテンツタイプが有効になっていることを確認してください。個々のアイテムが「含める」に設定され、「公開済み」ステータスであることを確認してください。匿名ユーザーがコンテンツを表示できることを確認してください。
詳細設定でバッチ制限を減らしてください。URLエイリアスのプリフェッチを無効にしてください。Webベースの再生成の代わりにDrushコマンドの使用を検討してください。
cronが実行されており、cron再生成が無効になっていないことを確認してください。最終生成以降に最小ライフタイムが経過していることを確認してください。手動でcronを実行するか、Drushを使用して再生成してください。
詳細設定でチャンクサイズを増やしてください。低優先度のコンテンツタイプやアーカイブの除外を検討してください。チャンクあたり最大50,000リンク、合計最大50,000チャンクです。
Webルートから静的なsitemap.xmlファイルを削除してください。XML SitemapはDrupalルーティングを通じてサイトマップを動的に提供する必要があります。
Security Notes 4
- 'administer xmlsitemap'権限は制限付きとしてマークされており、信頼できる管理者にのみ与えるべきです
- サイトマップファイルはサイトのURL構造を誰にでも公開する可能性があります
- サイトマップは匿名ユーザーのアクセスを尊重するため、コンテンツアクセス権限が正しく設定されていることを確認してください
- モジュールはリンクを含める前にエンティティアクセスをチェックしますが、カスタムリンクの追加はこれをバイパスします