Googleに限らず現在の検索サイトは、全文検索型サーチエンジンを使用しているので、いわゆる検索ロボットが世界中のサイトを訪れて、抽出したキーワードをデータベースに登録しています。つまり、サイトをオープンしても、検索ロボットが訪れて、キーワードが登録されるまでは、検索サイトに引っかかりません。GoogleやBing(Microsoft)には、サイトを登録するコーナーがあり、そこに登録すれば検索ロボットが来てくれます。ただし、単に登録しただけではなかなか来てくれません。
一方、DrupalのようなCMSの場合は、HTMLのファイルが静的に存在しているわけではなく、PHPのプログラムがHTMLを動的に生成するので、トップ・ページを登録するだけでは、検索ロボットが上手く検索してくれないという問題があります。それを解決するのが、サイトマップです。サイトマップは、sitemaps.orgが規格化したxmlファイルであり、検索ロボットに訪れてもらいたいページを記述します。そのサイトマップを、ドキュメントルートに置き、そのURLを検索ロボットに知らせるのです。
ただし、サイトの更新が多いと、人力でサイトマップをメンテナンスするのは大変です。そこで、サイトマップを自動生成するツールを準備します。私が最初に試したのは、Googleからダウンロードしたsitemap_genというツールです。しかし、Drupalには向いてないと思いました。sitemap_genは、apacheのアクセスログからURLを抽出し、サイトマップを作成するツールです。しかし、Drupalは、サイトやコンテンツの作成・管理に特殊なURLを使用します。例えば、コンテンツを編集するときは“/node/…/edit”にアクセスします。当然ですが、コンテンツは、特定のユーザしか編集できないので、検索ロボットが訪れるとエラーになります。アクセスエラーが起きると、ロボット検索の優先順位が下がるといううわさがあるので、このようなごみは取り除く必要があります。そのために、sitemap_genにはフィルタ機能が付いているのですが、設定が難しく完全には除去できません。試行錯誤を繰り返しているときに、コンテンツを削除しても、アクセスログは残るので、それを除去するフィルタを追加しなければならないことに気が付いて、sitemap_genはあきらめました。
Drupalのアドオンで、xmlsitemapというモジュールが見つかりました。このモジュールは、“/sitemap.xml”というURLにアクセスすると、サイトマップを動的に生成します。常に、Drupalのデーターベースから最新の情報を検索し、サイトマップを作成するのでごみが入りません。テストの結果は良好だったので、このツールを採用することにしました。ただし、デフォルトのままでは、sitemap.xmlにはホームページしか登録されません。sitemap.xmlに“Blog entry”を追加するには、Administration » Modulesで“XML sitemap node”を有効化してから、Administration » Structure » Content typesで“Blog entry”を“edit”し、“XML sitemap”の“Inclusion”を“Excluded”から“Included”に変更する必要があります。また“taxonomy terms”を追加するには、Administration » Modulesで“XML sitemap taxonomy”を有効化してから、Administration » Structure » Taxonomyでボキャブラリーを“edit”し、“XML sitemap”の“Inclusion”を“Excluded”から“Included”に変更する必要があります。この変更は、Administration » Configuration » Search and metadataH » XML sitemapで、“REBUILD LINKS”タブを選択し、“Rebuild sitemap”ボタンをクリックすれば、sitemap.xmlに反映されます。
私の知る限り、サイトマップのURLを検索ロボットに知らせる方法は、三つあります。一つ目は“robots.txt”を利用する方法です。“robots.txt”は、検索ロボットに検索方法を通知するファイルであり、その中にサイトマップのURLを
Sitemap: http://www.5thbear.jp/sitemap.xml
のように、記述するのです。Drupalを使っている場合は、既存の“robots.txt”に追加するだけなので簡単です。サイトを訪れる検索ロボットは、GoogleやBingだけではありません。この方法は、サイトを訪れる全ての検索ロボットに通知できるので、是非とも設定すべきだと思います。しかし、検索ロボットの来訪を促す効果はありません。
二つ目の方法は、サイトマップを検索サイトに登録する方法です。サイトマップの登録は、ロボットの来訪を促す効果があるようです。登録方法は、GoogleとBingで異なりますが、基本的には同じです。Googleの入口は、“ウェブマスター セントラル”です。“ウェブマスター ツールにログイン”をクリックし、ログインします。“Google アカウント”を持っていない場合は、“アカウントを作成”をクリックし、取得してください。ログインしたら“サイトを追加”をクリックします。Googleの場合、“www.5thbear.jp”と“crafts.5thbear.jp”と“mypet.5thbear.jp”を、別々のサイトとして登録する必要があります。URLを入力し、“続行"をクリックすると、認証キーの設定が求められます。認証キーの付いたファイルを、ドキュメントルートにダウンロードし、確認ボタンを押すと登録されます。
Bingの入口は、“ウェブマスター ツール”です。“ウェブマスター ツール サイン イン”をクリックし、サインインします。“Windows Live ID”を持っていない場合は、“Windows LiveID にサイン アップ”をクリックし、新規登録してください。ログインしたら“サイトを追加”をクリックします。Bingの場合は、“5thbear.jp”をサイトとして登録します。URLを入力し、“送信"をクリックすると、認証キーの設定が求められます。認証キーの付いたファイルを、ドキュメントルートにダウンロードし、確認ボタンを押すと登録されます。“www.5thbear.jp/sitemap.xml”と“crafts.5thbear.jp/sitemap.xml”と“mypet.5thbear.jp/sitemap.xml”は、“5thbear.jp”のサイトマップとして登録します。http://5thbear.jp/をクリックすると管理用のタブが現れます。“クロール"を選択し、“サイトマップ (XML、Atom、RSS)”をクリックし、“フィードの追加”をクリックすれば、登録できます。
昔はYahoo Japanにも同様のツールがあったのですが、今はGoogleのエンジンを使っているので、登録する必要はありません。
三つ目の方法は、GoogleやBingの管理画面にある“サイトマップ再送信”ボタンと同様の機能を外部から起動する“sitemap ping”を利用する方法です。一般的には、検索サイトで利用方法を調べ“/etc/cron.daily”に組み込むか、代行サービスを行っているサイトに登録します。“xmlsitemap”にもその機能が組み込まれています。以前のバージョンの“xmlsitemap”は無駄な“sitemap ping”が多かったので、私は“/etc/cron.daily”に組み込む方法を選択していました。しかし、今は改善されたので、“xmlsitemap”の“sitemap ping”を使用しています。Administration » Modulesで“XML sitemap engines”を有効化してから、Administration » Configuration » Search and metadataH » XML sitemapで、“SEARCH ENGINES”タブを選択し、エンジンとして“Bing”と“Google”を選択し、保存すれば“sitemap ping”が実行されます。
検索エンジンに送ったsitemap.xmlが行き渡るには、数ヶ月かかるようです。何故かというと、不適切なsitemap.xmlを送りつけ検索エラーが発生するのに気が付いて修正版を送り直したら、正常なsitemap.xmlによるロボット検索も始まるのですが、不適切なsitemap.xmlによる検索エラーも数ヶ月間出続けるからです。従って、思い通りのsitemap.xmlが作れるようになるまでは、検索エンジンへの登録や、“sitemap ping”は行わない方が無難です。“xmlsitemap”のテスト中は、“XML sitemap engines”はOffのままにしておきましょう。