2005/11/18 (Fri)
Google本家で正式な日本語版ヘルプが公開されました(ITmedia記事)。
(閲覧にはGoogleのアカウント取得とログインが必要なようです)
以後はそちらをご参照下さいませ。
注:この文書はhttps://www.google.com/webmasters/sitemaps/docs/en/sitemap-generator.htmlをテキトウ訳したものです。
内容について訳者は責任を持てません。
長くても正式な日本語文書が出るまでの揮発性文書ってことでそのへん汲んでください。
間違いとかあるようでしたら掲示板とか日記コメントとかでよろしく頼みまさー。
sitemap_gen.pyをインストールして、実行しようとする場合、以下に関する知識が必要です。
加えて、サーバにはPythonのバージョン2.2以上がセットアップされている必要があります。これらについて確信が持てない場合はホスティング業者に確認しましょう。
サイトマップジェネレータは「URLのリスト」あるいは「ウェブサーバのディレクトリ構成」もしくは「サーバのアクセスログ」からサイトマップを構築することができます。プロジェクトに興味を持たれた方はhttp://sourceforge.net/projects/goog-sitemapgenを訪れてみてください。
3つの要件のいずれも準備できない場合でも、テキスト形式のサイトマップをGoogle Sitemapsプログラムに提出することができます。 詳細はFAQを参照してください。
サイトマップジェネレータは、.ZIPまたは.GZファイルとして以下の場所から入手できます:
http://sourceforge.net/project/showfiles.php?group_id=137793&package_id=153422
アーカイブは以下のファイルを含みます:
sitemap_gen.py README example_urllist.txt example_config.xml
設定ファイルのサンプル(example_config.xml)を見つけてください。
example_config.xml を別名で保存し(仮に config.xml とします)、テキストエディタで開きます。
以下は config.xml ファイルの要約です:
<site base_url="http://www.example.com/" store_into="/path/sitemap.xml.gz " verbose="1"> <urllist path="/path/urllist.txt" encoding="UTF-8" /> <directory path="/path/dir" url="http://www.example.com/dir/" /> <accesslog path="/path/access-0.log" /> <filter action="drop" type="wildcard" pattern="*index.htm*" /> </site>
この設定ファイルには、正しいフォーマットでサイトマップファイルを出力するために必要な情報(入出力ファイルの位置など)が含まれます。
サイトマップを生成するには3つの方法があります:
設定ファイルは、これらの方法のうち1つ以上を利用することができます。利用しない方法に関する記述については行ごと削除してください。
どの方法を利用する場合でも、設定ファイルには以下のセクションに示した修正が必要です。使用される方法に関係なく、全てのconfig.xmlファイルは以下の情報を含まなければなりません:
あなたのウェブサイトのトップページURLです。サイトマップには、この配下のページだけが含まれます。
ファイルを出力するウェブサーバ上の場所です。スクリプトはこのファイルを自動で作成しますから、あらかじめファイルを作成する必要はありません。
config.xmlファイルには、以下の任意の情報を含めることができます:
必要に応じてconfig.xmlファイルを編集し、保存してください。
URLのリストからサイトマップをつくるには、URLを記したテキストファイルの(サーバ上での)位置を設定ファイルに記述して下さい。
<site>
...
<urllist path="/path/urllist.txt" encoding="UTF-8" />
「path=」はファイルのフルパスを指定します。
「encoding=」は(URLリストのファイルが)UTF-8でない場合に適宜指定します。詳細はこの文書の先にあるEncodingsセクションを参照して下さい。
urllist.txtファイルは、サイトマップに含めるURLのリストを含んでいる単純なテキストファイルです。各々のURLのためにオプションを指定できます。オプションはURLと同じ行にシングルスペースで区切って記述します。例:
http://www.example.com/abc/something http://www.example.com/abc/xyy.pdf lastmod=2001-12-31T14:05:06+00:00 http://www.example.com/abc/def?x=12&y=23 changefreq=weekly priority=0.3
URLが最後に更新された日時をISO 8601フォーマット(YYYY-MM-DDThh:mm:ss+00:00)で記述します。時刻については省略できます。例:
"2005-02-21T18:00:15+00:00"
URLが更新される頻度を示します。命令ではなく、あくまで目安として使われます。値は「常時」、「毎時」、「毎日」、「毎週」、「毎月」、「毎年」あるいは「更新されない」が指定可能です。
同じサイト中の他のページと比較した場合の、このページの優先度を設定します。指定可能な値は0.0から1.0の間です。0.0は優先度が最も低く、1.0は最も高い優先度となります。優先度の指定は、あなたのサイトにおける検索エンジンの探索に影響を与えることができます。優先度は相対的に評価され、サイト内のURLどうしを比較する場合にのみ利用されます。つまり、あなたがサイト内で指定した優先度と、他のサイトで指定されている優先度の数値とは相関がありません。
設定ファイルに(行で区切った単純なリストとは別に)特定のエントリを作成することで、サイトマップへ情報を加えることもできます。
<site>
...
<url
href="http://www.example.com/stats?q=name"
lastmod="2005-02-21"
changefreq="never"
priority="0.7" />
「href=」は、サイトマップに含めるURLを記述します。lastmod、changefreq、priority は上の説明の通りです。
コンテンツがあるディレクトリの配下に納まっている場合、適切なパスを指定することでパターンにマッチするファイルを一括して指定することができます。サイトマップジェネレータは、ディレクトリ構造に基づくマップを生成するためディレクトリを走査します。例:
<site>
...
<directory path="/var/www/html/dir" url="http://www.example.com/dir" />
<directory path="/var/www/html/dir2" url="http://www.example.com/dir2" />
「path=」は、走査を開始する起点をフルパスで指定します。サイトマップジェネレータはこのディレクトリとすべてのサブディレクトリを走査します。
「url=」は、サーバ上のディレクトリに対応するURL(http://〜)を指定します。
サイトマップジェネレータは、Apache形式のアクセスログからURLを自動的に拾うことができます。その場合、config.xmlファイルで以下のようにログファイルへのパスを指定してください:
<site>
...
<accesslog path="/etc/httpd/logs/access-0.log" encoding="UTF-8"/>
「path=」は、サーバ上でのログファイルの場所をフルパスで指定します。
「encoding=」は(URLリストのファイルが)UTF-8でない場合に適宜指定します。詳細はこの文書の先にあるEncodingsセクションを参照して下さい。
フィルタを用いて特定のファイルを除外もしくは含める規則を記述することができます。
<site>
...
<filter action="drop" type="wildcard" pattern="*/internal/*" />
「action="drop"」は、パターンにマッチしたURLをマップから除外します。
「action="pass"」は、パターンにマッチしたURLをマップに含めます。
そして「type="wildcard"」は、URLとのパターンマッチにおいて標準的なワイルドカードを使うことを意味します(*および?)。
それに対し「type="regexp"」は、正規表現が使われることを意味します。
以下はワイルドカード・正規表現のいずれを利用する場合にも共通です:
「pattern=」は、マッチするパターンを記述します。フィルタはconfig.xmlファイルに記載される順序で適用されます。なお、フィルタの指定と入力の指定(単独のURL、URLのリスト、ディレクトリまたはアクセスログ)を混在させた場合でも結果は同じです。サイトマップジェネレータがサイトマップに加えたすべてのURLは、まず最初にフィルタとのマッチングが行われます。フィルタがマッチしないURLはデフォルトでサイトマップに含まれます。
設定ファイル(URLリストもしくはアクセスログ)で参照されるファイルは、デフォルトとして想定されているUTF-8以外の文字コードを含めることができます。サイトマップジェネレータがファイルを読む方法を変更するため、config.xmlで代わりの文字コードを指定します。一般的な文字コードは以下のように指定します。
さらに「ISO 8859-1」から「ISO 8859-15」までがサポートされています。
以下のファイルをサーバへコピーしてください:
sitemap_gen.py config.xml urllist.txt (必要であれば)
ファイルをサーバにコピーする方法はあなたの環境に依存します。一般的にはFTPやSCPなどが利用されます。詳細はシステム管理者に問い合わせて下さい。
一連のファイルをサーバへコピーしおわった後、サイトマップジェネレータのスクリプトを実行する必要があります。サーバに接続して、以下のコマンドを実行して下さい:
$ python sitemap_gen.py --config=/path/config.xml
ヒント:あらかじめ設定がうまくいっているかどうかを確認したい場合は、以下のコマンドを実行しましょう。このコマンドではGoogleに接続せず、マップの生成のみを行います:
$ python sitemap_gen.py --config=/path/config.xml --testing
コマンドプロンプトでリクエストの状態を確認することができます:
Reading configuration file: /path/config.xml Opened URLLIST "/path/urllist.txt" Walking DIRECTORY "/var/www/html/dir" Walking DIRECTORY "/var/www/html/dir2" Opened ACCESSLOG "/etc/httpd/logs/access-0.log" Sorting and normalizing collected URLs. Writing Sitemap file "/path/sitemap.xml.gz" with 1092 URLs Notifying search engines. Notifying www.google.com Count of file extensions on URLs: 208 .html 574 .jpg ... Number of errors: 0 Number of warnings: 0
これほど多くの出力が見られない場合は、verbose(デバッグ情報の出力オプション)を見直してみて下さい。上記はverboseを「1」に設定した場合の代表的な例です。
どのようなファイルのエラーも返されます。たとえば、あなたがディレクトリの設定で「url=」を入れ忘れたなら、スクリプトは以下を出力します:
[ERROR] Directory entries must have both "path" and "url" attributes Number of errors: 1
config.xmlファイルのすべての誤りを修正し、スクリプトを再実行しましょう。エラーがひとつも無ければ、新しく sitemap.xml.gz ファイルが生成され、サイトマップジェネレータはGoogleのクローラーにサイトマップの存在を通知します。
サイトマップジェネレータは、コンテンツの更新に合わせて実行するのがお勧めです。最短でも一時間ごとの実行でいいでしょう。
あなたのサイトがUnixサーバで稼働しているなら、cronジョブへの登録を検討してみてはいかがでしょうか。詳細な情報を得るためGoogleで以下の語句を検索してみてください:
[cron] [cronジョブ 設定]
他のプラットホームを使っているならば、スクリプトを繰り返し実行する設定についてシステム管理者に問い合わせてみてください。また、Google Groupsの「Google Sitemaps Group」でアドバイスを受けることができるかもしれません。
このセクションでは、サイトマップジェネレータの利用に際して想定される質問や遭遇しそうな問題点、そしてそれらへの対処法についてお話しします。
問題点:サイトマップジェネレータは、以下のエラーと警告を返します:
[ERROR] When attempting to access your generated Sitemap at the following URL: http://www.example.com/sitemap.xml.gz we failed to read it. Please verify the store_into path you specified in your configuration file is web-accessible. Consult the FAQ for more information. [WARNING] Proceeding to notify with an unverifiable URL.
何が起きたのでしょう?
サイトマップジェネレータはあなたが明示した通りのファイルを生成し、続いてファイルが実際にあるかどうかをHTTPで確認しようとしましたが、それに失敗しました。新しくサイトマップが生成されたことはGoogleに通知されましたが、「あなたのサイトマップは検索エンジンからは読めないかも知れない」ことについてエラーと警告を示しています。
サイトマップジェネレータは、config.xmlファイルの「store_into」で指定された「サーバのフルパス」にサイトマップを生成します。そして「base_url」で示されたURLを元にサイトマップのURLを構成し、Googleへ通知します。たとえば、以下のように設定した場合、:
<site base_url="http://www.example.com/" store_into="/var/www/html/sitemap.xml.gz">
サイトマップジェネレータがGoogleに通知するサイトマップのURLは以下の通りです:
http://www.example.com/sitemap.xml.gz
サイトマップのファイルはこのURLでアクセス可能になっている必要があります。もしこのURLが無効な場合、Googleはあなたのサイトマップを見つけることができません。
では何をすべきでしょう?
あなたは、config.xmlで正しい「base_url」と「store_into」のフルパスを指定しているかどうか確かめる必要があります。また、ウェブブラウザで「base_url」上にあるサイトマップへアクセスできるかどうかも確認すべきでしょう。もしフルパスやURLの間違いを発見したなら、サイトマップジェネレータを再実行するか、もしくはサイトマップのファイルを正しい場所に移動した後にGoogleのウェブサイトから(手動で)通知してください。
問題点:サイトマップジェネレータは、以下のエラーを返します:
Some installs of Python 2.2 do not include complete support for XML. Please try upgrading your version of Python and re-running the script.
何が起きたのでしょう?
Python バージョン2.2は、幾つかのプラットフォームにおいてXMLファイルを扱うのに必要なライブラリをサポートしていません。サイトマップジェネレータのスクリプトは実行に際してXMLの完全なサポートを要求します。
では何をすべきでしょう?
インストールされているPythonをアップグレードしましょう。そのためには、システム管理者と連絡を取る必要があると思われます。
これはサイトマップジェネレータの実行だけに関わることで、サイトマップの生成自体を妨げるわけでは無いことに気をつけて下さい。別の方法を使って同じ物を生成できるなら、Googleにサイトマップを提出することは可能なのです。
質問:他の「.gz」や「.zip」などのファイルは一体なんですか?
sitemap_gen.pyを解凍すると、これまでに書いたものより相当多いファイルを目にすることでしょう。だいたい以下のような感じでしょうか:
AUTHORS ChangeLog COPYING example_config.xml example_urllist.txt PKG-INFO README setup.py sitemap_gen.py test_sitemap_gen.py
他のファイルは、パッケージとライセンス関係に関する情報がほとんどです。これらのファイルには一通り目を通すことをお勧めします。
唯一の例外である「test_sitemap_gen.py」は、開発者としてこのオープンソースプロジェクトに参加しようとするとき役に立つかもしれないユニットテスト用のスクリプトです。 ソースコードを修正せずにサイトマップジェネレータを使うのであれば──ほとんどの人はそうだと思いますが──、このテストスクリプトはまったくの不要品でしょう。