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 작업이나 장시간 코딩할 땐 블루라이트 차단 안경을 꼭 착용하고 있어요.
눈 건강이야말로 꾸준한 개발 작업의 핵심이니까요!
👉 개발자에게 추천하는 블루라이트 차단 안경 보러가기

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

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

목차
위로 스크롤