Google ウェブマスターツール用のsitemap.xmlをリアルタイム表示する

Google ウェブマスターツール用のsitemap.xmlをリアルタイム表示します。
PHPで書きます。ファイル名「sitemap.xml.php」としますので、まず.htaccessの設定です。

.htaccess

RewriteEngine On
RewriteRule sitemap.xml$ sitemap.xml.php [NC,L]

 

sitemap.xml.php

<?php

const URLROOT = 'http://nusoft.jp';
$files = getFiles("");

$urls = array();

foreach($files as $file){
	if(!preg_match('/_hidden_dir/i', $file)){ //対象外を設定します
		$urls[$file]['lastmod'] = date('Y-m-d',filemtime($file));
		$urls[$file]['loc'] = URLROOT . '/' . $file;
	}
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
foreach($urls as $url){
	echo '<url>' . "\n";
	echo '<loc>' . $url['loc'] . '</loc>' . "\n";
	echo '<lastmod>' . $url['lastmod'] . '</lastmod>' . "\n";
	echo '</url>' . "\n";
}
echo '</urlset>' . "\n";

function getFiles($dir) {
	$list = $tmp = array();
	foreach(glob($dir . '*/', GLOB_ONLYDIR) as $child_dir) {
		if ($tmp = getFiles($child_dir)) {
			$list = array_merge($list, $tmp);
		}
	}
	foreach(glob($dir . '{*.html}', GLOB_BRACE) as $files) {
		$list[] = $files;
	}
	return $list;
}

あとは、このアドレスをGoogleウェブマスターツールに登録して待つこと1日。完了です。