사이트맵은 검색 엔진은 꼭 필요한 사항은 아니지만 그래도 대부분의 검색 엔진 로봇들이 사이트에 담긴 페이지 링크 구조 파악을 위해 사이트맵을 참고하기 때문에 만들어서 넣어두는게 좋다.
사이트맵은 간단하게 보면 사이트에 포함된 링크 연결 관계도를 작성하는건데 유형에 따라 조금 더 복잡할 수 있다. 이번에 소개하는 사이트맵은 기본적인 블로그에서 사용되는 형태이니 간다하게 나마 참고하도록 하고 자세한 내용은 하단 구글 링크를 통해 알아보면 도움이 될 것이다.
사이트맵이 생성되는 위치는 꼭 지켜야되는건 아니지만 최상위 루트에 지정해 놓는게 좋다. 물론 index.php 죽이기를 통해 깔끔한 URL구조로 나타내는게 보기엔 좋지만 의무는 아니니 크게 상관이 없다. 아래는 sitemap 을 PHP를 통해 작성한 간단한 예제이니 참고 하여 사이트에 맞게 작성하도록 하자.
<?php
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
// 기본 사이트 정의
$lastBuildDate = date('c');// 사이트 최종 수정일 (date 포맷은 ISO 8601 date 으로 2023-06-14T02:11:34+09:00 형태로 표기된다.)
echo '
<url>
<loc>https://blog.redinfo.co.kr</loc>
<lastmod>'.$lastBuildDate.'</lastmod>
<priority>1.0</priority>
</url>
';
$sitemapItems = array();
// 일반 페이지
$sitemapItems[] = array('loc'=>'https://example.com/contact');
$sitemapItems[] = array('loc'=>'https://example.com/signin');
$sitemapItems[] = array('loc'=>'https://example.com/signup');
$sitemapItems[] = array('loc'=>'https://example.com/caegory');
// 게시판
$sitemapItems[] = array('loc'=>'https://example.com/notice');
$sitemapItems[] = array('loc'=>'https://example.com/qna');
$sitemapItems[] = array('loc'=>'https://example.com/community');
// 게시글 - 게시글은 보통 DB에서 추출할것이다.
for($i=1;$i<100;$i++){
$sitemapItems[] = array('loc'=>'https://example.com/notice/view/'.$i,'lastmod'=>date('c',strtotime("+ ".$i."days")));
$sitemapItems[] = array('loc'=>'https://example.com/qna/view/'.$i,'lastmod'=>date('c',strtotime("+ ".$i."days")));
$sitemapItems[] = array('loc'=>'https://example.com/community/view/'.$i,'lastmod'=>date('c',strtotime("+ ".$i."days")));
}
foreach($sitemapItems as $k=>$v){
echo '
<url>
<loc>'.$v['loc'].'</loc>
'.(empty($v['lastmod']) ? null :'<lastmod>'.$v['lastmod'].'</lastmod>').'
</url>
';
}
echo '</urlset>';
위의 예제는 사이맵의 기본적인 구성을 기반으로 작성되었으니 참고하여 사이트에 맞추어야하며 게시글의 경우 lastmod 속성이 있는데 해당 속성은 최종 수정일이 들어갈 수 있도록 맞추어 주면 된다.