読者です 読者をやめる 読者になる 読者になる

sitemap.xmlについての覚書

web xml 覚書

主にsitemaps.orgを参考に

sitemap.xmlとは?

サイト内のページを検索エンジンなどのクローラに伝えるための手段。
所定のフォーマットで記述したXMLファイル。サーバ上でアクセスできるようにする。

あくまでクローラのページ収集を助ける目的なので、全てのページを記述する必要はない。っと思う。

サンプル

ざっくりとしたサンプルは以下。基本的にurl要素にクローラに伝えたいページの情報を記述する

<?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:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"  
     xmlns:xhtml="http://www.w3.org/1999/xhtml"  
>

    <url>  
        <loc>http://www.example.com/aaa </loc>  
        <lastmod>2016-05-01</lastmod>  
        <changefreq>weekly</changefreq>  
        <priority>0.5</priority>  
    </url>  
    <url>  
        <loc>http://www.example.com/bbb </loc>  
        <lastmod>2016-05-01</lastmod>  
        <changefreq>weekly</changefreq>  
        <priority>0.5</priority>  
    </url>  
    <url>  
        <loc>http://www.example.com/ccc </loc>  
        <lastmod>2016-05-01</lastmod>  
        <changefreq>weekly</changefreq>  
        <priority>0.5</priority>  
    </url>  
</urlset>

url要素に含む内容は以下。最悪locのみ記述すればOK

要素名 必須 コメント
loc 必須 ページのURL
lastmod 省略可 最終更新日。「YYYY-MM-DDThh:mmTZD」時刻は省略可
changefreq 省略可 更新頻度。always,hourly,daily,weekly,monthly,yearly,never
priority 省略可 優先順位。1.0 から 0.1

ガラケー向けのURLを記述する場合

フィーチャーフォン用サイトマップ参照。

フィーチャーフォンサイトマップは別のnamespaceを読み込んで指定する。
「xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"」 で読み込み、該当のURLに「mobile:mobile」を指定する

<?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:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"  
     xmlns:xhtml="http://www.w3.org/1999/xhtml"  
>  
    <url>  
        <loc>http://mobile.example.com/article100.html </loc>  
        <mobile:mobile/>  
    </url>  
</urlset>

スマホ向けのURLを記述する場合

設定を検索エンジンに伝える 別々の URL参照。

レスポンシブなどでPC版とスマホ版のURLが同一の場合は、特に気にする必要はない。
スマホ版のURLが異なる場合には、URLの対応をsitemap.xmlに明記する。

「xmlns:xhtml="http://www.w3.org/1999/xhtml"」 で読み込み、該当のURLに「xhtml:link」と「media」でスマホ向けURLを指定する

<?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:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"  
     xmlns:xhtml="http://www.w3.org/1999/xhtml"  
>  
    <url>  
        <loc>http://www.example.com/page-1/ </loc>  
        <xhtml:link  
            rel="alternate"  
            media="only screen and (max-width: 640px)"  
            href="http://m.example.com/page-1" />  
    </url>  
</urlset>

複数言語のURLを記述する場合

サイトマップを使用して代替言語ページを指定する参照。

「xmlns:xhtml="http://www.w3.org/1999/xhtml"」 で読み込み、該当のURLに「xhtml:link」と「hreflang」で言語向けURLを指定する

<?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:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"  
     xmlns:xhtml="http://www.w3.org/1999/xhtml"  
>  
    <url>  
        <loc>http://www.example.com/page-1/ </loc>  
        <xhtml:link  
                     rel="alternate"  
                     hreflang="de"  
                     href="http://www.example.com/deutsch/"  
                     />  
        <xhtml:link  
                     rel="alternate"  
                     hreflang="de-ch"  
                     href="http://www.example.com/schweiz-deutsch/"  
                     />  
        <xhtml:link  
                     rel="alternate"  
                     hreflang="en"  
                     href="http://www.example.com/english/"  
                     />  
    </url>  
</urlset>

サイトマップのサイズが大きくなったり、複数に渡る場合

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

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

サイトマップの XML 形式

イメージは以下。

<?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>  
        <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>

sitemap要素に含む内容は以下。最悪locのみ記述すればOK

要素名 必須 コメント
loc 必須 サイトマップのURL
lastmod 省略可 最終更新日。「YYYY-MM-DDThh:mmTZD」時刻は省略可

そもそも、複数のsitemapを作って通知すれば良いような気がしていて、なぜにsitemapindexを別途作る必要があるのかは謎。

設置について

サイトマップを設置する場所はどこでも構わないが、sitemap.xmlには設置されたディレクトリ配下のURLしか記述できない

また同様にsitemap.xmlを含まれるURLのドメインとは別のドメインのサーバに設置することもできない。

http://example.co.jp/catalog/sitemap.xml に置いた場合は、http://example.co.jp/catalog/ から始まる URL を含めることができますが、http://example.co.jp/images/ から始まる URL を含めることはできません。

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

クローラへの通知について

設置したsitemap.xmlをクローラに通知するには以下の方法がある
- 検索エンジンの送信インターフェースを使用してサイトマップを送信
- サイトマップの場所を robots.txt ファイルで指定
- HTTP リクエストを使用してサイトマップを送信

一番手っ取り早いのは、robots.txtに記述する方法だと思われる。
robots.txtに含む場合は以下のように記述する。複数のsitemap.xmlを指定することも可

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