PEAR::XML_Serializerを使ってサイトマップを出力
PEAR::XML_Serializerを使って、google等で認識できるサイトマップを出力するメモです。
XML_Serializerのインストール
XML_Serializerと依存するパッケージを次のようにインストールしました。
$ bin/pear -c pear.conf install --onlyreqdeps channel://pear.php.net/XML_Serializer-0.18.0
PEARパッケージをアプリケーションごとにインストールのように、「-c pear.conf」で設定ファイルを指定しています。
サンプル
次のようにしてサイトマップのxmlを作成します。
-
-
$elem['loc'] = 'http://url/foo';
-
$elem['changefreq'] = 'monthly';
-
$elem['priority'] = '0.5';
-
$urls[] = $elem;
-
-
$elem['loc'] = 'http://url/bar';
-
$elem['changefreq'] = 'weekly';
-
$elem['priority'] = '0.6';
-
$urls[] = $elem;
-
-
'addDecl' => TRUE,
-
'encoding' => 'UTF-8',
-
'indent' => ' ',
-
'rootName' => 'urlset',
-
"defaultTagName" => "url",
-
);
-
-
$serializer = new XML_Serializer($options);
-
-
$result = $serializer->serialize($urls);
-
-
if ($result === true) {
-
$xml = $serializer->getSerializedData();
-
}
サイトマップのメモ
- 1個のサイトマップファイルに記述できるURLの数は、50000個まで。
- 1個のサイトマップファイルのサイズ(圧縮前)は、10MB(10,485,760バイト)を超えてはいけない。
これらの制限の範囲に収まらない場合は、サイトマップファイルを複数に分けます。
(gzip形式で圧縮も可能)
sitemaps.org - プロトコルに次の記述があります。
複数のサイトマップを使用する場合は、サイトマップ インデックス ファイルに各サイトマップ ファイルをリストする必要があります。
複数のサイトマップファイルを作成した場合は、サイトマップ インデックス ファイルが必須のような記述に見えますが、とりあえずは気にしにないことに・・・
(googleの「ウェブマスター ツール」や、Yahooの「Yahoo! Site Explorer
-」では、複数のサイトマップを登録できるようになっています。)
リンク
サイトマップのフォーマット
sitemaps.org - プロトコル
PEARのマニュアルサイトのサンプル
PEAR :: Manual :: Example
XML_Serializerのチュートリアル
Instant XML with PHP and PEAR::XML_Serializer [PHP & MySQL Tutorials]
トラックバック URL :