검색엔진에 내 사이트를 더 잘 노출하고 싶다면 sitemap.xml은 필수입니다. 이 글에서는 PHP로 sitemap.xml을 자동 생성하는 방법을 단계별로 설명하고, 실전에서 바로 활용할 수 있는 코드 예제까지 제공합니다.
sitemap.xml이란?
sitemap.xml은 검색엔진이 내 웹사이트의 구조를 빠르게 이해하도록 도와주는 XML 형식의 파일입니다. 주요 URL 목록, 마지막 수정일, 페이지 중요도 등의 정보를 담고 있어 SEO 최적화에 매우 유리합니다.
자동 생성의 필요성
- 콘텐츠가 많거나 자주 업데이트 된다면 수동 관리가 비효율적
- 페이지 추가 시 sitemap도 함께 업데이트되어야 검색 노출 누락 방지
- PHP로 자동 생성 시스템을 구축하면, 페이지 등록 시 자동 반영 가능
- https://example.com/sitemap_auto_create.php 를 임의 호출해서 생성되게 함
- sitemap_auto_create.php에서 최근 정보로 sitemap.xml 자동 생성
sitemap 자동 생성 흐름
- 모든 페이지 또는 게시글 URL을 수집
- 실제로는 DB 테이블에서 정보를 가져옴.
- lastmod 시간은 MySQL/MariaDB의 DATETIME 값을 사용
- sitemap XML 포맷으로 구성
- sitemap.xml 파일로 자동 생성
PHP 코드 예제
가장 기본적인 방식으로 몇 개의 URL을 배열로 직접 설정한 예제입니다.
https://example.com/sitemap_auto_create.php로 접속 시 아래 코드가 실행됩니다.
<?php
header('Content-Type: text/plain; charset=utf-8');
// 기본 URL 목록
$urls = [
[ 'loc' => 'https://example.com/', 'lastmod' => date('Y-m-d') ],
[ 'loc' => 'https://example.com/about', 'lastmod' => '2025-07-30' ],
[ 'loc' => 'https://example.com/contact', 'lastmod' => '2025-07-30' ],
];
// XML 구성 시작
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $url) {
$xml .= " <url>\n";
$xml .= " <loc>{$url['loc']}</loc>\n";
$xml .= " <lastmod>{$url['lastmod']}</lastmod>\n";
$xml .= " <changefreq>weekly</changefreq>\n";
$xml .= " <priority>0.8</priority>\n";
$xml .= " </url>\n";
}
$xml .= '</urlset>';
// 파일로 저장
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/sitemap.xml', $xml);
echo "✅ sitemap.xml 생성 완료!";
?>
PHPMariaDB 연동 + ISO 8601 시간 포맷 적용
MariaDB에서 게시글 목록과 수정일자를 불러와 sitemap에 반영하고, lastmod는 ISO 8601 형식(예: 2025-07-25T00:00:00+09:00)으로 출력하는 예제입니다.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=your_db", "user", "pass");
$stmt = $pdo->query("SELECT slug, updated_at FROM posts");
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
while ($row = $stmt->fetch()) {
$dt = new DateTime($row['updated_at'], new DateTimeZone('Asia/Seoul'));
$lastmod = $dt->format('Y-m-d\TH:i:sP');
$loc = "https://example.com/post/" . $row['slug'];
$xml .= " <url>\n";
$xml .= " <loc>{$loc}</loc>\n";
$xml .= " <lastmod>{$lastmod}</lastmod>\n";
$xml .= " <changefreq>weekly</changefreq>\n";
$xml .= " <priority>0.8</priority>\n";
$xml .= " </url>\n";
}
$xml .= '</urlset>';
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/sitemap.xml', $xml);
echo "✅ DB 기반 sitemap.xml 생성 완료!";
?>
PHP자동 호출과 robots.txt 설정
- https://example.com/sitemap_auto_create.php를 관리자만 수동 호출하거나
- 추후 크론탭(crontab)을 사용해 주기적으로 실행하도록 설정할 수 있습니다.
- robots.txt에 아래 한 줄을 추가해 검색엔진이 sitemap을 읽을 수 있도록 해야 합니다.
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
PHP마무리 및 확장 팁
- 게시글이나 웹페이지가 많아지면, sitemap 파일을 분할 예) sitemap1.xml, sitemap2.xml
- 이미지, 비디오, 다국어 사이트용 sitemap도 따로 설정 가능
- 검색엔에 sitemap.xml 제출해야함.
php sitemap.xml 자동 생성은 많은 페이지에 적합한 방식입니다. 수동은 초반에 진행하시면 됩니다. 검색엔진은 구글 서치 콘솔, 네이버 서치어드바이저, 다음 웹마스터 도구, 빙 웹마스터 도구 이렇게 4곳은 필수로 작성한 sitemap.xml를 제출하시면 됩니다.
참고로, 수동으로 sitemap.xml을 만드는 방법도 함께 익혀두시면 좋아요.
관련 포스팅들
- 👉 구글 서치 콘솔 사이트 등록 방법|사전 준비 사항도 알아보기
- 👉 SEO에 강한 글쓰기 구조|문단, 제목, 키워드 배치 노하우
- 👉 SweetAlert2로 예쁜 Toast 알림 만들기|간단한 JS 코드 예제 포함
- 👉 한글 키워드 vs 영문 슬러그|다르게 해도 될까? 실전 SEO 팁
- 👉 워드프레스에서 수동 애드센스 광고 쉽게 넣는 법
개발자에게 꼭 필요한 블루라이트 차단 안경
오랜 시간 모니터를 바라보며 코딩 작업을 하다 보면 눈의 피로가 누적되기 쉽습니다.
저도 sitemap 작업이나 장시간 코딩할 땐 블루라이트 차단 안경을 꼭 착용하고 있어요.
눈 건강이야말로 꾸준한 개발 작업의 핵심이니까요!
👉 개발자에게 추천하는 블루라이트 차단 안경 보러가기
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”