サイトマップの XML 形式

次に移動:
XML タグ定義
エンティティのエスケープ処理
サイトマップ インデックス ファイルの使用
その他のサイトマップの形式
サイトマップ ファイルの場所
サイトマップの検証
サイトマップ プロトコルの拡張
検索エンジンのクローラに通知

このドキュメントでは、サイトマップ プロトコルの XML スキーマについて説明します。

サイトマップ プロトコル形式は、XML タグで構成されています。 サイトマップのすべてのデータ値には、エンティティのエスケープ処理を行う必要があります。 ファイルは UTF-8 エンコードで作成する必要があります。

サイトマップの記述ルールは次のとおりです。

他のすべてのタグはオプションです。 これらのオプション タグがサポートされているかどうかは、検索エンジンによって異なります。 詳細については、お使いの検索エンジンのマニュアルを参照してください。

サイトマップのすべての URL は www.example.com、 store.example.com などの単一のホストから参照されている必要があります。詳細については、「サイトマップ ファイルの場所」を参照してください。

XML サイトマップのサンプル

1 つの URL だけを含み、オプションのタグをすべて使用したサイトマップの例を次に示します。 オプションのタグはイタリックで表示されています。


<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      <loc>http://www.example.com/</loc>

      <lastmod>2005-01-01</lastmod>

      <changefreq>monthly</changefreq>

      <priority>0.8</priority>

   </url>

</urlset> 

複数の URL の例もご覧ください。

XML タグ定義

使用できる XML タグは次のとおりです。

属性 説明
<urlset> 必須

ファイルの他のタグを囲み、現在のプロトコル標準を参照します。

<url> 必須

各 URL エントリの親タグです。 その他のタグは、このタグ内に含めます。

<loc> 必須

ページの URL です。 ウェブ サーバーによっては、http などのプロトコルから始め、末尾にスラッシュを含める必要があります。 この値は 2,048 文字以下で指定する必要があります。

<lastmod> オプション

ファイルの最終更新日です。 この日付は W3C Datetime 形式で記述します。 必要な場合は、時刻の部分を省略して YYYY-MM-DD の形式で記述することもできます。

このタグは、サーバーが返す If-Modified-Since (304) ヘッダーとは別のものです。検索エンジンは、両方のソースからの情報を別々に使用することがあります。

<changefreq> オプション

ページの更新頻度です。 検索エンジンではこの値を参考情報として使用しますが、指定した値とは異なる頻度でクロールされることがあります。 有効な値は次のとおりです。

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

"always" 値は、アクセスするたびに内容が更新されるドキュメントに使用します。 "never" 値は、アーカイブ ページの URL に使用します。

このタグの値は、コマンドではなくヒントとして使用されることに注意してください。検索エンジンのクローラは、この情報を使用してクロール頻度を調整しますが、実際のクロールは "hourly" と指定されたページでは 1 時間に 1 回以下、"yearly" と指定されたページでは 1 年に 1 回以上行われます。また、"never" と指定されたページも予期せず変更された場合に備えて定期的にクロールされます。

<priority> オプション

サイト内の他の URL と比較したこの URL の優先度です。0.0 から 1.0 までの値を指定できます。この値は他のサイトのページとの比較方法に影響するものではなく、検索エンジンのクローラに重要なページを知らせるためのものです。

ページのデフォルトの優先度は 0.5 です。

ページに割り当てた優先度が、検索エンジンの検索結果に表示されるページの掲載順位に影響することはほとんどありません。検索エンジンでは、この情報を使用してサイトから URL を選択するため、最も重要なページを検索インデックスに優先的に登録することができます。

また、サイト内のすべての URL に高い優先度を設定しないでください。優先度は相対的なものであるため、サイト内で URL を選択する場合にのみ使用します。

トップへ戻る

エンティティのエスケープ処理

サイトマップ ファイルは UTF-8 エンコードで作成する必要があります (ファイルを保存すると、通常は UTF-8 エンコードで保存されます)。 他の XML ファイルと同じように、URL などのデータ値では、次の文字にエンティティのエスケープ コードを使用する必要があります。

文字 エスケープ コード
アンパサンド & &amp;
一重引用符 ' &apos;
二重引用符 " &quot;
不等記号 (より大) > &gt;
不等記号 (より小) < &lt;

URL (サイトマップの URL を含む) はすべてエスケープ処理を行い、ホストするウェブ サーバーで読み取り可能な形式でエンコードする必要があります。スクリプト、ツール、ログ ファイルなどを使用して URL を生成した場合、通常は手動で入力したデータ以外は適切にエンコードされます。URL は URI の RFC-3986 基準、IRI の RFC-3987 基準、および XML 基準に従っている必要があります。

ASCII 以外の文字 (ü) とエンティティのエスケープ処理が必要な文字 (&) を含む URL の例を次に示します。

http://www.example.co.jp/ümlat.html&q=name

ISO-8859-1 エンコードを使用するサーバーでホストされている場合は、次のように ISO-8859-1 エンコードで URL をエスケープします。

http://www.example.co.jp/%FCmlat

.html&q=name

UTF-8 エンコードを使用するサーバーでホストされている場合は、次のように UTF-8 エンコードで URL をエスケープします。

http://www.example.com/%C3%BCmlat.html&q=name

エンティティのエスケープ処理も行った URL は次のようになります。

http://www.example.com/%C3%BCmlat.html&amp;q=name

XML サイトマップのサンプル

次に、XML 形式のサイトマップの例を示します。 このサイトマップには複数の URL が含まれており、各 URL には異なるオプション パラメータが使用されています。


<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      <loc>http://www.example.com/</loc>

      <lastmod>2005-01-01</lastmod>

      <changefreq>monthly</changefreq>

      <priority>0.8</priority>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=12&amp;desc=vacation_hawaii</loc>

      <changefreq>weekly</changefreq>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=73&amp;desc=vacation_new_zealand</loc>

      <lastmod>2004-12-23</lastmod>

      <changefreq>weekly</changefreq>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=74&amp;desc=vacation_newfoundland</loc>

      <lastmod>2004-12-23T18:00:15+00:00</lastmod>

      <priority>0.3</priority>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=83&amp;desc=vacation_usa</loc>

      <lastmod>2004-11-23</lastmod>

   </url>

</urlset>

トップへ戻る

サイトマップ インデックス ファイル (複数のサイトマップ ファイルのインデックス) を使用する場合

複数のサイトマップ ファイルを送信できますが、各サイトマップ ファイルにリストする URL は 50,000 個まで、ファイル サイズは 10 MB (10,485,760 バイト) 以下とする必要があります。必要な場合は、サイトマップ ファイルを gzip 形式で 10 MB 以下に圧縮して、サーバーの負荷を軽減できます。50,000 個以上の URL をリストする場合は、複数のサイトマップ ファイルを作成する必要があります。

複数のサイトマップを使用する場合は、サイトマップ インデックス ファイルに各サイトマップ ファイルをリストする必要があります。 サイトマップ インデックス ファイルには、最大で 50,000 個のサイトマップをリストできます。サイズは 10 MB (10,485,760 バイト) 以下に圧縮する必要があります。 また、サイトマップ インデックス ファイルが含まれている必要があります。サイトマップ インデックス ファイルの XML 形式は、サイトマップ ファイルとほぼ同じです。

次に、サイトマップ インデックス ファイルの要件を示します。

サイトマップ インデックス ファイルでは、オプションの <lastmod> タグも指定できます。

注: サイトマップ インデックス ファイルには、このファイルと同じサイトにあるサイトマップのみを含めることができます。 たとえば、http://www.yoursite.co.jp/sitemap_index.xml には、http://www.yoursite.co.jp のサイトマップを含めることができますが、http://www.example.co.jp や http://yourhost.yoursite.co.jp のサイトマップを含めることはできません。 サイトマップと同様に、サイトマップ インデックス ファイルは UTF-8 エンコードで作成する必要があります。

XML サイトマップ インデックスのサンプル

次の例では、2 つのサイトマップをリストするサイトマップ インデックスを作成します。


<?xml version="1.0" encoding="UTF-8"?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <sitemap>

      <loc>http://www.example.com/sitemap1.xml.gz</loc>

      <lastmod>2004-10-01T18:23:17+00:00</lastmod>

   </sitemap>

   <sitemap>

      <loc>http://www.example.com/sitemap2.xml.gz</loc>

      <lastmod>2005-01-01</lastmod>

   </sitemap>

</sitemapindex>

注: XML ファイルのすべての値と同様、サイトマップの URL には、エンティティのエスケープ処理を行う必要があります。

サイトマップ インデックスの XML タグ定義

属性 説明
<sitemapindex> 必須 ファイル内のすべてのサイトマップに関する情報を囲みます。
<sitemap> 必須 個々のサイトマップの情報を囲みます。
<loc> 必須

サイトマップの場所を指定します。

この場所には、サイトマップ、Atom ファイル、RSS ファイル、テキスト ファイルを配置できます。

<lastmod> オプション

対応するサイトマップ ファイルの更新時刻を指定します。 サイトマップにリストされているページの変更時刻ではありません。 lastmod タグの値は、W3C Datetime 形式で指定する必要があります。

最終更新日のタイムスタンプを提供すると、検索エンジンのクローラがインデックス内の特定のサイトマップのみをクロールできるようになります。たとえば、特定の日付以降に更新されたサイトマップのみがクロールされます。このようにサイトマップを段階的にクロールすることで、大規模なサイトでも新しい URL を迅速に見つけることができます。

トップへ戻る

その他のサイトマップの形式

サイトマップ プロトコルでは、ページに関する詳細を検索エンジンに伝えることができます。ページに関して URL 以外の追加情報を提供できるため、Google ではこのプロトコルの使用をお勧めしています。 この XML プロトコル以外に RSS フィードやテキスト ファイルもサポートされていますが、提供できる情報は制限されます。

シンジケーション フィード

RSS (リアリー シンプル シンジケーション) 2.0 または Atom 0.3 / 1.0 フィードを指定できます。 通常、この形式はサイトが既にシンジケーション フィードに対応している場合に使用します。 フィードは最近の URL に関する情報しか提供できないため、この方法では検索エンジンにサイト内の URL をすべて伝えることはできませんが、検索エンジンは通常のクロール処理の際にこの情報を使用して、フィード上のページ内のリンクをたどることにより、サイト上の他のページに関する情報を見つけることができます。 フィードは、検索エンジンでクロールされるようにする最上位のディレクトリに置きます。 検索エンジンはフィード内の情報を次のように抽出します。

テキスト ファイル

1 行につき 1 つの URL を入力したテキスト ファイルを送信できます。 テキスト ファイルは次のガイドラインに従っている必要があります。

テキスト ファイルのエントリは次のように入力します。

http://www.example.co.jp/catalog?item=1


http://www.example.co.jp/catalog?item=11

トップへ戻る

サイトマップ ファイルの場所

サイトマップ ファイルを置く場所によって、サイトマップに含めることのできる URL は異なります。 サイトマップ ファイルを http://example.co.jp/catalog/sitemap.xml に置いた場合は、http://example.co.jp/catalog/ から始まる URL を含めることができますが、http://example.co.jp/images/ から始まる URL を含めることはできません。

http://example.org/path/sitemap.xml を変更する権限がある場合は、通常 http://example.org/path/ で始まる URL の情報を含めることができます。http://example.com/catalog/sitemap.xml には、次のような URL を含めることができます。


http://example.com/catalog/show?item=23

http://example.com/catalog/show?item=233&user=3453

たとえば、サイトマップを http://example.co.jp/catalog/sitemap.xml に置いた場合、次のような URL を含めることはできません。


http://example.com/image/show?item=23

http://example.com/image/show?item=233&user=3453

https://example.com/catalog/page1.html

つまり、サイトマップにリストされているすべての URL は、同じプロトコル (この例では http) を使用し、サイトマップと同じホスト上に存在しています。 たとえば、サイトマップが http://www.example.co.jp/sitemap.xml にある場合、このサイトマップには http://subdomain.example.co.jp の URL を含めることはできません。

有効ではない URL はクロールされません。 サイトマップは、ウェブ サーバーのルート ディレクトリに置くことを強くお勧めします。 たとえば、ウェブサーバーが example.co.jp にある場合、サイトマップ インデックス ファイルは http://example.co.jp/sitemap.xml に置きます。 セキュリティ保護のため組織内でディレクトリごとに異なる書き込み権限を設定している場合などは、パスごとにサイトマップを作成する必要があります。

ポート番号付きのパスを使用してサイトマップを送信する場合は、サイトマップ ファイルにリストする各 URL のパスにポート番号を含める必要があります。たとえば、サイトマップが http://www.example.com:100/sitemap.xml にある場合、サイトマップにリストする各 URL は、http://www.example.com:100 で始める必要があります。

サイトマップとクロス送信

単一ホストから複数ホスト用のサイトマップを送信するには、それに対する URL がサイトマップに送信されるホストの所有者であることを「証明」する必要があります。次に、例を示します。 3 つのホスト用のサイトマップを送信する場合を想定します。


www.host1.com に対するサイトマップ ファイル sitemap-host1.xml

www.host2.com に対するサイトマップ ファイル sitemap-host2.xml

www.host3.com に対するサイトマップ ファイル sitemap-host3.xml

また、それら 3 つのサイトマップを www.sitemaphost.com という単一ホスト上に配置する必要があるとします。この場合、サイトマップの URL は次のようになります。


http://www.sitemaphost.com/sitemap-host1.xml

http://www.sitemaphost.com/sitemap-host2.xml

http://www.sitemaphost.com/sitemap-host3.xml

既定では、このようにすると「クロス送信」エラーになります。なぜなら、www.sitemaphost.com 上でホストされているサイトマップを通じて www.host1.com 用の URL を送信しようとしているからです (他の 2 つのホストについても同様です)。このエラーを回避する方法の 1 つは、自分が www.host1.com の所有者である (ファイルを変更する権限がある) ことを証明することです。これを行うには、www.host1.com 上の robots.txt ファイルを、www.sitemaphost.com 上のサイトマップをポイントするように変更します。

この例では、http://www.host1.com/robots.txt にある robots.txt ファイルに、"Sitemap: http://www.sitemaphost.com/sitemap-host1.xml" という行を含めます。www.host1.com 上の robots.txt ファイルを変更して、www.sitemaphost.com 上のサイトマップをポイントするようにすることで、自分が www.host1.com の所有者であることを暗黙的に証明したことになります。つまり、www.host1.com 上の robots.txt ファイルを制御するユーザーは、http://www.sitemaphost.com/sitemap-host1.xml にあるサイトマップに www.host1.com 用の URL が含まれていると信頼します。他の 2 つのホストについても、同じプロセスを繰り返すことができます。

これで、サイトマップを www.sitemaphost.com 上に送信できました。

特定のホストの robots.txt (たとえば http://www.host1.com/robots.txt など) が、他のホスト上にあるサイトマップまたはサイトマップ インデックスをポイントしている場合は、ターゲット サイトマップ (http://www.sitemaphost.com/sitemap-host1.xml など) のそれぞれについて、すべての URL が、それをポイントしているホストに属する必要があります。なぜなら、前に説明したように、サイトマップは単一ホストの URL のみを含むものと想定されているからです。

トップへ戻る

サイトマップの検証

次の XML スキーマでは、サイトマップ ファイルの要素と属性を定義します。 このスキーマは下記のリンクからダウンロードできます。

サイトマップ情報: http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
サイトマップ インデックス ファイル: http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd

ツールを使用して、サイトマップの構造をこのスキーマに基づいて検証できます。 XML 関連ツールのリストは、次の場所から入手できます。

http://www.w3.org/XML/Schema#Tools
http://www.xml.com/pub/a/2000/12/13/schematools.html

サイトマップまたはサイトマップ インデックス ファイルのスキーマを検証するため、次のように追加ヘッダーを XML ファイルに含める必要があります。

サイトマップ:


<?xml version='1.0' encoding='UTF-8'?>

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      ...

   </url>

</urlset>

サイトマップ インデックス ファイル:


<?xml version='1.0' encoding='UTF-8'?>

<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <sitemap>

      ...

   </sitemap>

</sitemapindex>

トップへ戻る

サイトマップ プロトコルの拡張

サイトマップ プロトコルは、独自のネームスペースを使用して拡張できます。 ルート要素にネームスペースを指定してください。 たとえば、次のように指定します。


<?xml version='1.0' encoding='UTF-8'?>

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"

         xmlns:example="http://www.example.com/schemas/example_schema"> <!-- namespace extension -->

   <url>

      <example:example_tag>

         ...

      </example:example_tag>

      ...

   </url>

</urlset>

トップへ戻る

検索エンジンのクローラに通知

サイトマップを作成し、ウェブサーバーに置いたら、このプロトコルをサポートする検索エンジンにその場所を伝える必要があります。 この操作は次の手順で行います。

検索エンジンでは、サイトマップを検索し、サイトマップにある URL をクロールできます。

検索エンジンの送信インターフェースを使用してサイトマップを送信

サイトマップを検索エンジンに直接送信すると、ステータスの情報や処理エラーを受け取ることができます。これを行う方法については、検索エンジンのマニュアルをご覧ください。

サイトマップの場所を robots.txt ファイルで指定

サイトマップの場所を指定するには、robots.txt ファイルを使用します。 次の行を追加してください。

Sitemap: http://www.example.com/sitemap.xml

このコマンドは user-agent の行には依存しないため、ファイル内の任意の場所に置くことができます。 サイトマップ インデックス ファイルをご利用の場合は、そのファイルの場所だけを含めることができます。 インデックス ファイルでリストされている個々のサイトマップをリストする必要はありません。

robots.txt ファイルごとに複数のサイトマップを指定できます。

Sitemap: http://www.example.com/sitemap-host1.xml

Sitemap: http://www.example.com/sitemap-host2.xml

HTTP リクエストを使用してサイトマップを送信

HTTP リクエストを使用してサイトマップを送信するには、<searchengine_URL> を検索エンジンによって指定された URL に置き換え、リクエストを次の URL に送信してください。

<searchengine_URL>/ping?sitemap=sitemap_url

たとえば、サイトマップをhttp://www.example.co.jp/sitemap.gz に置いた場合、URL は次のようになります。

<searchengine_URL>/ping?sitemap=http://www.example.com/sitemap.gz

/ping?sitemap=: より後の文字列について、URL のエンコード処理を行います。

<searchengine_URL>/ping?sitemap=http%3A%2F%2Fwww.yoursite.co.jp%2Fsitemap.gz

HTTP リクエストは、wget、curl、またはその他の方法を使用して送信できます。リクエストが正常に送信された場合は HTTP 200 の応答コードが返されますが、別の応答コードが返された場合はリクエストを再送信する必要があります。HTTP 200 の応答コードは、検索エンジンでサイトマップを受信したことを示すもので、サイトマップやサイトマップ内の URL が有効であることを示すものではありません。これを簡単に行うには、サイトマップを定期的に生成し送信する自動設定を作成します。
注: サイトマップ インデックス ファイルを送信する場合は、サイトマップ インデックス ファイルの場所を含む 1 件の HTTP リクエストだけを送信します。インデックス内の個々のサイトマップについてリクエストを送信する必要はありません。

トップへ戻る

コンテンツの除外

サイトマップ プロトコルでは、インデックスに登録するコンテンツを検索エンジンに伝えることができます。 これを行うには、robots.txt ファイルか、ロボットの メタ タグを使用します。 検索エンジンからコンテンツを除外する方法の詳細については、robotstxt.org をご覧ください。

 

トップへ戻る

最終更新日: 2008 年 3 月 21 日