Trackback to ::
구글 검색엔진 등록 - Google Sitemap
Google Sitemaps (BETA)
항상 최신의 내용을 긁어올테니 정보를 쏴주시오!! 라는데 사용자 입장에서도 당연히 환영할만한 일이다. 네이버에 검색되기 위해 한달에 몇십만원식 내야되는 것에 비하면야 구글은 컨텐츠만 좋으면 (링크만 많이 당하면) 상위에 랭크되니.. 아무튼 이게 뭔지 느껴보기 보다는 일단 해보고 싶다는 생각에
이 포스트를 참고해서 급조했는데 첫번째로 만들었던 XML을 submit 하고 한참을 기다리니 Status가
Invalid Date로 나와버린다;;
<lastmod> element는
ISO 8601대로 하면 된다고 하는데
1997-07-16T19:20:30+01:00 처럼 표시했더니 에러가 발생한다. 이유는 미스테리..;; 그래서 포스트 시간을 GMT로 바꿔
1997-07-16T19:20:30Z 처럼 표시해주니 잘 된다.
아래 소스를 태터툴즈가 설치된 디렉토리에 적당한 이름으로 저장해두고
Google Sitemaps에 등록하면 된다. 별달리 설정할건 없고 기본적으로 모든 포스트를 가지고 XML을 만드는데 속도가 문제되거나 포스트 개수가 5만개가 넘을경우에는 (설마..) 25번째줄을 지우고 24번째줄의 주석을 풀어서(//를 삭제) 태터 환경설정에서 정해준 XML 아이템 개수만큼만 출력하도록 한다. (또는 적당한 개수를 LIMIT x, y 하는 식으로 지정..) 그리고 블로그 메인의 최근 수정시간은 포스트, 리플, 트랙백중 가장 최근의 시간을 넣게 돼있는데 항상 현재시간으로 설정하고 싶으면 19번째줄을 지우고 18번째줄의 주석을 풀어준다. (역시 //를 삭제) 수정시에는 파일을 꼭 UTF-8로 저장하도록 주의해야 한다.
<?
require "inc_global.php";
require "inc_function.php";
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
echo "<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\">\r\n";
list($time_post) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid} WHERE is_public='1'"));
list($time_reply) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid}_reply WHERE is_secret=0"));
list($time_trackback) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid}_trackback"));
echo "<url>\r\n";
echo "<loc>$s_root_path</loc>\r\n";
// echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z")."</lastmod>\r\n";
echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z", max($time_post, $time_reply, $time_trackback))."</lastmod>\r\n";
echo "<changefreq>always</changefreq>\r\n";
echo "<priority>1.0</priority>\r\n";
echo "</url>\r\n";
// $result = mysql_query("SELECT no, regdate FROM t3_$dbid WHERE is_public='1' ORDER BY regdate DESC LIMIT 0, $p_xml_cnt");
$result = mysql_query("SELECT no, regdate FROM t3_$dbid WHERE is_public='1' ORDER BY regdate DESC");
while(list($no, $regdate) = mysql_fetch_array($result))
{
echo "<url>\r\n";
echo "<loc>${s_root_path}index.php?pl=$no</loc>\r\n";
echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z", $regdate)."</lastmod>\r\n";
echo "<changefreq>daily</changefreq>\r\n";
echo "<priority>0.8</priority>\r\n";
echo "</url>\r\n";
}
echo "</urlset>\r\n";
?>