PHP로 sitemap.xml 자동 생성 방법|검색엔진 최적화를 위한 실전 예제

검색엔진에 내 사이트를 더 잘 노출하고 싶다면 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 자동 생성 흐름

  1. 모든 페이지 또는 게시글 URL을 수집
    • 실제로는 DB 테이블에서 정보를 가져옴.
  2. lastmod 시간은 MySQL/MariaDB의 DATETIME 값을 사용
  3. sitemap XML 포맷으로 구성
  4. 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 생성 완료!";
?>
PHP

MariaDB 연동 + 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을 만드는 방법도 함께 익혀두시면 좋아요.

관련 포스팅들

개발자에게 꼭 필요한 블루라이트 차단 안경

오랜 시간 모니터를 바라보며 코딩 작업을 하다 보면 눈의 피로가 누적되기 쉽습니다.
저도 sitemap 작업이나 장시간 코딩할 땐 블루라이트 차단 안경을 꼭 착용하고 있어요.
눈 건강이야말로 꾸준한 개발 작업의 핵심이니까요!
👉 개발자에게 추천하는 블루라이트 차단 안경 보러가기

“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”

위로 스크롤