Drupal多言語サイトでSimple XML Sitemapを採用する際のポイントと再生成時の注意点
DrupalでXMLサイトマップを生成する場合、コントリビュートモジュールを利用する方法があります。
ただし、多言語サイトでは「サイトマップを生成できるか」だけでなく、各言語のURLを必要な形で出力できるかまで確認してモジュールを選定することが重要です。
実際の日英2言語サイトでは、従来別案件で利用していたXML Sitemapではなく、「Simple XML Sitemap」を採用しました。
また、導入後の運用では、サイトマップのリビルド操作だけでは即時に再生成されず、cronの実行によって反映されるという挙動を弊社案件で確認しました。
本記事では、Drupalの多言語サイトでXMLサイトマップモジュールを選ぶ際の考え方と、Simple XML Sitemapを運用する際に注意したい再生成の仕組みについて解説します。
目次
DrupalのXMLサイトマップは拡張モジュールで実装できる
XMLサイトマップは、サイト内に存在するURLを検索エンジンへ伝えるために利用されます。
Drupalでは、XMLサイトマップを生成するためのコントリビュートモジュールが複数提供されています。
そのため、実装時には単に「XMLサイトマップを出力できる」という条件だけではなく、
- 対象サイトの言語数
- 必要なURLを出力できるか
- コンテンツ追加時の更新方法
- サイトマップを再生成するタイミング
なども踏まえてモジュールを選ぶことが求められます。
特に多言語サイトの場合は、日本語側のURLが出力されているだけでは十分ではありません。
多言語サイトで英語URLが出力されない問題
実案件では、日本語・英語の2言語で構成されたDrupalサイトにXMLサイトマップを導入する必要がありました。
LYZONの別案件では「XML Sitemap」というモジュールを利用していましたが、今回必要としていた形では英語側のURLがXMLサイトマップ上に表示されないという課題がありました。これは、Language negotiation(言語判定)の設定やURLのプレフィックス構成によっては、デフォルト言語以外のURLがサイトマップ出力の対象から外れるケースがあるためと考えられます。同様の事象に心当たりがある場合は、言語設定とモジュール側の対象言語設定を照らし合わせて確認するとよいでしょう。
そこで、別の選択肢として「Simple XML Sitemap」を採用しています。
Simple XML Sitemapを利用した構成では、日本語ページと英語ページのURLをサイトマップ上に出力することができ、今回の多言語サイトの要件に対応できました。あわせて、各言語ページのURLに対してhreflang属性を含むalternateタグをサイトマップ内に出力できる点も、多言語サイトにおいては見逃せないポイントです。これにより、検索エンジンに対して各URLがどの言語・地域向けのページであるかを正確に伝えられます。
ここで重要なのは、「どちらのモジュールが常に優れているか」という比較ではありません。
Drupalサイトの構成や必要とする出力によって、適したモジュールは変わります。
そのため、多言語サイトでXMLサイトマップモジュールを選定する際は、実際の出力結果まで確認したうえで判断しましょう。
モジュール選定時は実際のXMLまで確認する
XMLサイトマップモジュールを導入した場合、管理画面上の設定が完了しただけで実装完了と判断しないことが重要です。
少なくとも、
- サイトマップファイルが正常に生成されているか
- 日本語ページのURLが含まれているか
- 英語ページなど他言語のURLが含まれているか
- 追加・変更したコンテンツが反映されるか
を実際のXMLで確認しましょう。
特に多言語サイトでは、日本語側では問題なく見えていても、他言語側だけ出力されていない可能性があります。
サイトマップの生成有無だけでなく、期待するURLが実際に含まれているかまで目を通しておく必要があります。
Simple XML Sitemapの再生成で注意したいcron
Simple XML Sitemapを運用するうえでもう一つ注意したいのが、サイトマップの再生成タイミングです。
実案件(Simple XML Sitemap 4.x系を使用)では、サイトマップの内容を変更する際、リビルド処理を実行して再生成する運用を行っていました。
しかし、リビルドを実行しただけではサイトマップの内容がすぐに更新されず、その後cronが実行されることで、実際の再生成処理が完了するという挙動が確認されました。なお、この挙動はモジュールのバージョンやバッチ生成・チャンクサイズなどの設定によって変わる可能性があります。設定によってはリビルド操作だけで即時に生成が完了する場合もあるため、自身の環境での挙動は個別に確認してください。
そのため、管理画面などからリビルドを実行した直後にXMLを確認すると、
「設定を変更したのにサイトマップが変わっていない」
ように見える場合があります。
この場合、設定ミスと判断する前に、cronによる処理まで完了しているかをチェックしてください。
cronとは
cronは、指定した処理を定期的に実行するための仕組みです。
Drupalでも、定期的に実行する必要があるさまざまな処理にcronが利用されています。標準機能としては「Automated Cron」モジュールが有効であれば、ページアクセスなどをトリガーに一定間隔でcron処理が自動実行されます。また、管理画面の「設定>システム>Cronの実行」(環境によりメニュー名は異なります)から手動でcronを実行することも可能です。
サイトマップの再生成も、構成によってはこのcron処理を経由します。Simple XML Sitemapは、Drupalのcronフックを利用して再生成処理を完了させる仕組みになっているため、リビルド操作とcron実行の両方がそろって初めて、サイトマップの内容が最新化されます。
そのため、サイトマップを更新する機能を運用する場合は、
- どの操作で再生成処理が開始されるのか
- cronはどのタイミング(自動・手動)で実行されるのか
- cron実行後にサイトマップが更新されているか
を把握しておきましょう。
「設定」と「実際の反映」を分けて確認する
CMSの管理画面では、設定を保存すると処理が完了したように見えることがあります。
しかし実際には、裏側でバッチ処理やcronを実行して初めて反映される機能もあります。
サイトマップもその一例です。
運用手順としては、
- 必要な設定を変更する
- サイトマップのリビルドを実行する
- 必要に応じてcronの実行を確認する
- 生成されたXMLを直接確認する
という手順まで運用フローに組み込んでおくと、反映漏れを判断しやすくなります。
特にSEOに関係する設定は、公開画面を見ただけでは正常に反映されているか判断できないため、生成物そのものを確認する姿勢が欠かせません。
Drupalの拡張モジュールは要件に合わせて選定する
Drupalでは、標準機能に不足する機能をコントリビュートモジュールによって補うことができます。
実案件でもXMLサイトマップ以外に、リンク設定時に遷移先を同一タブ・別タブから選択できるようにするため、リンク属性を拡張する「Link Attributes」モジュールを利用しています。
このようにDrupalでは、必要な機能に合わせて既存モジュールを組み合わせることで、カスタム開発を抑えながら要件を実現できる場合があります。
一方で、「同じ目的のモジュールならどれでもよい」というわけではありません。
案件ごとに、
- 必要な機能を満たしているか
- 実際の出力が要件に合っているか
- 運用時の更新方法が把握できるか
を見極めることが大切です。
XMLサイトマップの運用手順も標準化する
サイトマップは、一度生成して終わるものではありません。
コンテンツの追加・削除やサイト構成の変更にあわせて、正常に更新され続ける必要があります。
そのためDrupalの運用手順には、
- コンテンツ更新後にサイトマップへ反映される条件
- 手動で再生成する場合の操作方法
- cronの実行タイミング
- XMLの確認方法
まで盛り込んでおくとよいでしょう。
モジュールの設定だけではなく、その後の運用方法まで整理しておくことで、担当者が変わった場合でも同じ基準で確認できるようになります。
まとめ
Drupalの多言語サイトでXMLサイトマップを実装する場合は、モジュールを導入するだけではなく、実際の出力と更新タイミングまで見ておく必要があります。
今回の事例で重要となったポイントは次の通りです。
- 多言語サイトでは各言語のURLがサイトマップへ出力されるか確認する
- サイト要件に応じてXMLサイトマップモジュールを選定する
- Simple XML Sitemapを利用する場合も、hreflang属性を含め実際のXMLを確認する
- リビルド操作とサイトマップの実際の再生成タイミングを切り分けて理解しておく
- cron実行後まで含めて更新結果をチェックする
- サイトマップの再生成方法を運用手順として標準化しておく
Drupalでは複数の拡張モジュールから要件に合うものを選べる一方で、それぞれ動作や運用方法が異なります。
「機能を導入できたか」だけではなく、「必要な結果が出力され、運用時にも正しく更新されるか」まで見届けることが重要です。
よくある質問(FAQ)
Q. Drupalの多言語サイトでは、必ずSimple XML Sitemapを使う必要がありますか。
必ずSimple XML Sitemapを使わなければならないわけではありません。
必要な言語のURLを適切に出力でき、サイトの要件を満たしているのであれば、別のモジュールを利用することも可能です。選定時には、実際のサイト構成で期待するXMLが生成されるかを確認してください。
Q. Simple XML Sitemapでリビルドを実行すれば、すぐにXMLが更新されますか。
モジュールのバージョンやバッチ生成・チャンクサイズなどの設定によって、リビルド操作だけで処理が完了せず、cronの実行を経てサイトマップが再生成される場合があります。設定によってはリビルド直後に生成が完了することもあるため、環境ごとの挙動を確認するのが安全です。
リビルド後に内容が変わっていない場合は、設定だけでなくcronの実行状況も確認してください。
Q. XMLサイトマップの動作確認では何を確認すればよいですか。
少なくとも、生成されたXMLを直接確認し、必要なURLが含まれているかをチェックします。
多言語サイトの場合は、一つの言語だけでなく、対象となる各言語のページが想定どおり出力されているか、hreflang属性が意図通り付与されているかも確認するとよいでしょう。また、コンテンツ追加・変更後にサイトマップへ反映されるかも見ておくと、運用開始後のトラブルを防ぎやすくなります。
LYZONが提供するWebサービス
Webに関するお悩みは、まずLYZONへ
構築・運用・AIまで、Webに関わる課題をワンストップで対応。まず何ができるかをご覧ください。
2021年入社。
日付が変わったら漫画アプリを巡回するのが日課