朝顔日記

Google 用のサイトマップを作った

2005-11-19

Google サイトマップ ベータの日本語版が出たとのことで早速利用したいと思い、Google 用のサイトマップを作ることにした。

Google サイトマップ (Beta) ヘルプ によればそれ用の xml ファイルをサイトにおいて置けばよいらしい。必須の要素は、urlset と url と loc であるとのことで、これらをどうやって作ろうか考えた。このサイトは、rNote という CMS で作られているわけですが、rNote はその動作の必要から、file.cache というエントリーの一覧を出力する機能があります。これを利用するのが簡単そう。file.cache の中はこんな感じです。タブが入っているのですが、以下では \t と表記しています

2005/11/diary_051116a.xml\t1132129737\tGoogle Analytics によるブラウザのバージョン\t
2005/11/diary_051114a.xml\t1131958425\tGoogle Analytics 導入\t
2005/11/diary_051112a.xml\t1131768115\tFirefox 拡張 Pref Buttons をアイコン化\t
以下略

エントリーのファイルと、unix タイムで記された更新日時と、エントリーのタイトルがタブ区切りで記述されているわけですね。

これを Google サイトマップ用の xml に動的に変換することにしました。以下のその sitemap.php です。


<?php header("Content-Type: application/xml"); ?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://diary.noasobi.net/</loc>
<lastmod><?php print(date("Y-m-d\TH:i:s+09:00", filemtime("rss.rdf"))) ?></lastmod>
<changefreq>daily</changefreq>
</url>
<?php
$file_cache = "cache/file.cache";    // file.cache
$TZD = "+09:00";                 // タイムゾーン
$site_url = "http://diary.noasobi.net/";
$ext = ".html";

$lines = file($file_cache);
$xml_items = "";
foreach($lines as $line) {
  $line = rtrim($line);
  $items = explode("\t", $line);
  $xml_items .= "<url>\n<loc>".$site_url.ereg_replace("\.xml", $ext, $items[0])."</loc>\n";
  $xml_items .= "<lastmod>".date("Y-m-d\TH:i:s$TZD", $items[1])."</lastmod>\n";
  $xml_items .= "</url>\n";
}
print $xml_items;
print "</urlset>";
?>

1行目の <?php header("Content-Type: application/xml"); ?> はいらないと思いますが、趣味で。:p)

余談ですが、これを設定しないと text/html で送出するわけですが、Firefox のレンダリング速度が全然違うんで驚きました。もちろん、application/xml の方が数倍遅いです。

今のところ、まだ Google に確認してもらえていないようで、サイトマップのステータスは保留になっていますが、こんなんでいいのかなぁ。

その後、サイトマップのステータスに、不適切な日付 との表示が。CVN65と娘たちの日常 で述べられているのと同じエラーの模様。ふーむ、しょうがないからとりあえず時間の部分を削ってみるか。

「Google 用のサイトマップを作った」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事へのツッコミ

1: mar (2005-11-20T01:22:34+09:00)
sitemap.xml の代わりに RSS 2.0 も使えますよ。
http://www.google.com/webmasters/sitemaps/docs/ja/other.html#feed
2: のり (2005-11-20T18:16:05+09:00)
残念ながら、RSS 2.0 も Atom 0.3 も出していないんですよ。いずれにしても全エントリーを含めるとかは無理なんですけどね。
というか、現在まだ確認ステータスが未確認のままという問題を抱えていて、Google サイトマップを利用するに至っていません。対策を考え中。
情報ありがとうございました。
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2005/11/diary_051119a.html