サイトマップの分割でsitemapindexとurlsetを同時に書くとエラーになった話

sitemap

通常際のサイトマップの作成方法

通常サイトマップのxml(sitemap.xml)を作成する場合、

<?xml version=”1.0″ encoding=”UTF-8″?>

で、xml宣言をした後に、<urlset>~</urlset>の中に<url>タグを用いて、各ページのURLを記述していきます。

<url>

<loc>WEBページのURL</loc>

</url>

 

そして、別に作成したサイトマップ自体をドメイントップなどでまとめて記述していく場合は、<?xml version=”1.0″ encoding=”UTF-8″?>でxml宣言をした後、<sitemapindex>~</sitemapindex>の中に

<sitemap>

<loc>サイトマップのURL</loc>

</sitemap>

とsitemapのあるURLを書いていきます。

 

サイトマップへのURLとトップ階層にあるページのURLのサイトマップを作成したい場合

一つのサイトが多くのディレクトリに分かれ、ファイルの量が多くなっている場合は、サイトマップを複数に分割して管理する方が良い場合があります。

ただし、サイトマップを分割して管理する場合に、そのサイトマップを配置する階層(通常はドメインのルートのトップかな)にある個別ページ自体のサイトマップはどう記述するの?という問題がでてきます。

私の場合、まず最初は、一つのsitemap.xml内に、<sitemapindex>の記述と<urlset>の記述の両方を入れてみました。

Googleのサーチコンソールでこのサイトマップを読み込ませると、

「読み込むことはできますが、おかしい箇所があります!」という感じでエラー表示になります。

で、エラーの詳細を見ると、

「XML パースエラー: ドキュメント要素の後ろに不正な文字列があります。」

となり、こんな→「^」意味不明記号が入ってますよ!みたいな説明になります。ただ、実際には「^」は入ってないんですよね。で、どうもxml宣伝がらみのエラーで結局のところ、両方を書くのが間違いなんじゃないの?という結論に至りました。

で、どうしたかというと、

<sitemapindex>を記述するxmlファイル(仮にAファイルとする)と、<urlset>を記述するxmlファイル(仮にBファイルとする)と分けて作成し、Aファイル内のsitemapにBファイルのURLを記述しておきます。

これでSEARCH CONSOLEに登録すると、無事エラー無く登録できました。

ネット上にはこの事例での情報が少ないので、100%正しいのかどうかはわかりませんが、一応解決しましたので、参考までに。

 

参考:サイトマップのXML形式(sitemaps.org)

sitemaps.org - プロトコル

 

コメント