アーカイブ
Google向けにサイトマップを作ったとしても、拾ってもらえるという保証はないし、
実際、以前やったときはそのサイトマップだけに何回もアクセスがあり、
そこに書いておいたページは一切無視された経緯があるわけで、
まだこのサイトマップというサービス自体がベータということもあり、
これを作成することが徒労になることは十分あるわけだが、一応やってみた。
例によって今回も、どこをいじったかわからなくなるから自分用改造メモ。
まず、作るべきサイトマップってのは、書式に従ってURLを列挙したXMLテキストだ。
新しいページが増えたら、そのテキストにURLを追加しておけばいい。
だが、手動で更新するのは面倒なので、rNoteに再構築の時ついでにやらせる。
元々rNoteは再構築のタイミングでRSSフィードを作成しているのだが、
RSSもXMLなんだから、Googleサイトマップだって作れないわけがない。
RSSフィードを作っている部分を少々いじれば、好みのサイトマップができるわけだ。
つーことで、rnote.phpのCreateRSS()関数の中身6行を全部コピーし、
その6行の後ろにペーストし、ファイル名を指す変数名を変えておく。
if(!file_exists(FNAME_RSS2))return;
$a = CreateHTML(15,FNAME_SKIN_RSS2,false);
if(SITE_CHARSET!='UTF-8') $a = mb_convert_encoding($a,'UTF-8',"auto");
$fp = _fopen_wb(FNAME_RSS2);
fwrite($fp,$a);
fclose($fp);
このファイル名はrnote_config.phpで指定しておく。
define(FNAME_RSS2,'sitemap1.xml');
define(FNAME_SKIN_RSS2,DIR_DATA.'sitemap_body'.FNAME_SKIN_EXT);
rss.rdfが置いてある場所に、sitemap1.xmlという空ファイルを666で置いておく。
そして、entriesにsitemap_body.skinを作成し、中身は以下のようにする。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
<%=$site_items num="9999" skin="entries/sitemap_item.skin" url="/diary/" %>
</urlset>
さらに、同じ場所にsitemap_item.skinを作成し、中身は以下のようにする。
<url>
<loc><%=$Url fullpath="1" %></loc>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<lastmod><%=$last_modified fmt="%Y-%m-%dT%H:%M:%SZ"%></lastmod>
</url>
終わり。あとは再構築するとsitemap1.xmlにズラっと。
ココで作成したサイトマップは、日別や月別のアーカイブを作成しない。
あくまで個別記事が検索に引っ掛かることが目的だからそれで構わない。
あと、各記事の日時じゃなくて、一番新しい記事の日時を全記事に使っている。
まぁ、記事自体に変更がなくてもサイドバーの数字とかが増えてるからね。
そんな感じでサイトマップは自動で作られるようになるので、
Googleアカウント取って登録してみたら、Mozilla/5.0で大量にアクセスされた。
サイト調査だけされて、キャッシュはしてくれなかったという事か。
一日じゃわからないが。
もう自動化したんだから今後放置しても大丈夫。