webサイトを作成したら、
Googleやヤフーなどの検索エンジンに、
素早くクロールしてもらうために、
サイトマップを作成して、各ウェブマスターツールに登録します。

SEOの観点からは、
特に順位アップに大きく貢献することはありませんが、
検索エンジンに早くインデックスしてもらえるメリットがあります。

まだ行っていない方は、サイト作成後のルーティンワークに、
組み込むのが良いと思います。

ちなみに、人間用のサイトマップと検索エンジン用のサイトマップがありますが、
今回は、検索エンジン用のサイトマップ作成方法ということになります。

それで、どのようなサイトマップを作成するかというと、
結論から書いておくと、以下のようになります。
http://www.your-dummy-domain.com/sitemap.xml

事前設定

まずは、事前設定ということで、
/app/config/routes.phpの設定を行います。

Router::connect('/sitemap.xml', array('controller' => 'sitemaps', 'action' => 'index'));

コントローラを新規作成

サイトマップ作成用にコントローラを作成します。
/app/controllers/sitemaps_controller.php

<?php
class SitemapsController extends AppController
{
var $name = 'Sitemaps';
var $uses = array('Category', 'Post');
var $components = array('RequestHandler');
var $helpers = array('Time', 'Xml');

function index ()
{
Configure::write ('debug', 0);
$cats = $this->Category->find('all', array('fields' => array('category', 'modified'), 'order' => 'modified DESC'));
$posts = $this->Post->find('all', array('fields' => array('id','category','modified'), 'order' => 'modified DESC'));
$this->set(compact('cats','posts'));
$this->RequestHandler->respondAs('xml');
$this->viewPath .= '/xml';
$this->layoutPath .= '/xml';
$this->layoutPath = 'xml';
}
}
?>

ビューを新規作成

続いてビューの作成です。
/app/views/sitemaps/xml/index.ctp

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

<url>
<loc>http://www.your-dummy-domain.com/</loc>
<lastmod>2009-01-21T23:55:55Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>

<?php foreach ($posts as $post):?>
<url>
<loc>http://www.your-dummy-domain.com/<?php echo $post['Category']['category']."/".$post['Category']['id']; ?></loc>
<lastmod><?php echo $time->toAtom($post['Category']['modified']); ?></lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<?php endforeach; ?>

<?php foreach ($cats as $cat):?>
<url>
<loc>http://www.your-dummy-domain.com/<?php echo $cat['Categorydata']['category']; ?></loc>
<lastmod><?php echo $time->toAtom($cat['Categorydata']['modified']); ?></lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<?php endforeach; ?>

</urlset>

レイアウト

/app/views/layouts/xml/xml.ctp
のようにxml.ctpレイアウトを作成し、
1行目に下記1行を追加します。

<?php
echo ('<?xml version="1.0" encoding="UTF-8"?>');
?>

サイトマップ作成のまとめ

RSS配信をマスターしていたおかげで、
サイトマップ作成はすんなりと終わりました。

ぜひ、検索エンジン用のサイトマップを作成し、
自分のwebサイトの存在を、
検索エンジンに知ってもらいましょう!

最後に参照サイトを紹介しておきます。
memoMania

【関連している記事】