前の記事 ≪:webshotがFirefoxにも対応しました
次の記事 ≫:phpを使って会社から家のPCをGoogleDesktop検索

Google Sitemap用XMLを吐き出すスクリプト例

2005年11月18日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法
Google Sitemapの日本語版が公開されました。
Google sitemapにサイトのサイトマップをXMLで提供すれば、クロールの精度が高まり、より多くのウェブページが検索結果に表示されるようになるそうです。
うれしいのが、クロールを上手くできたかというのをレポート出力してくれるところでしょうか。

そこで、サイトのコンテンツと同じディレクトリに設置するだけでGoogleサイトマップのXMLを吐き出だすphpスクリプトを作成してみました。
次のスクリプトを、*.html と同じディレクトリに置いてアクセスするとGoogleSitemap用のXMLが出力されます。
<?php

// 追加するファイルの種類
$allow_ext = array(
    
"html",
    
"txt",
    
"php"
);

$baseurl "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"])."/";

header("Content-type:text/xml;charset=utf-8");

echo <<<XML
<?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">
XML;

if (
$dir = @opendir("./")) {
    while ((
$file readdir($dir)) !== false) {
        list(
$tmp$ext) = explode("."$file);
        if (
in_array($ext$allow_ext)) {
            
$url  $baseurl.$file;
            
$date date("Y-m-d"filemtime($file));
            echo 
"<url>n";
            echo 
"<loc>$url</loc>n";
            echo 
"<lastmod>$date</lastmod>n";
            echo 
"</url>n";
        }
    }
    
closedir($dir);
}

?>
</urlset>

出力されるXMLのサンプル例

Google Sitemap用のXMLの仕様は、GoogleSitemaps Helpから確認できますが、英文のため、以下に例を示しておきます。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
 <url>
  <loc>クロールしたいサイトのURL</loc>
  <lastmod>更新日付(YYYY-MM-DDの形式か、ISO 8601 フォーマットで記述)</lastmod>
  <changefreq>更新の頻度(always, hourly, daily ,weekly, monthly ,yearly ,never のどれかから選択)</changefreq>
  <priority>このURLのプライオリティ(省略時は0.5)</priority>

 </url> 
</urlset>

■灰色の文字部分は省略可能

<urlset>タグの中に、<url>がページの数だけ来るという感じです。

関連の記事検索:Google, PHP
スポンサード リンク

By.KJ : 2005年11月18日 09:10 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)