---
title: "순수 PHP 코드로 sitemap.xml 사이트맵 생성 - 근심을 잊는 한 장"
description: "사이트맵은 웹사이트 관리자가 검색 엔진에 자신의 웹사이트에서 크롤링할 수 있는 웹 페이지 링크가 무엇인지 쉽게 알려줄 수 있도록 합니다. 가장 간단한 형태의 사이트맵은 sitemap.xml 파일로, 여기에는 웹사이트의 URL과 각 URL에 대한 기타 메타데이터(예: 마지막 업데이트 시간"
canonical_url: "https://www.ikxin.com/ko/article/wordpress-php-xml-sitemap"
last_updated: "2026-09-16T09:59:27.259Z"
locale: ko
meta:
  "og:description": "사이트맵은 웹사이트 관리자가 검색 엔진에 자신의 웹사이트에서 크롤링할 수 있는 웹 페이지 링크가 무엇인지 쉽게 알려줄 수 있도록 합니다. 가장 간단한 형태의 사이트맵은 sitemap.xml 파일로, 여기에는 웹사이트의 URL과 각 URL에 대한 기타 메타데이터(예: 마지막 업데이트 시간"
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~7Iic7IiYIFBIUCDsvZTrk5zroZwgc2l0ZW1hcC54bWwg7IKs7J207Yq466e1IOyDneyEsSAtIOq3vOyLrOydhCDsnorripQg7ZWcIOyepQ%2Cc_Article%2Ctitle_~7Iic7IiYIFBIUCDsvZTrk5zroZwgc2l0ZW1hcC54bWwg7IKs7J207Yq466e1IOyDneyEsQ%2Cdescription_~7IKs7J207Yq466e17J2AIOybueyCrOydtO2KuCDqtIDrpqzsnpDqsIAg6rKA7IOJIOyXlOynhOyXkCDsnpDsi6DsnZgg7Ju57IKs7J207Yq47JeQ7IScIO2BrOuhpOunge2VoCDsiJgg7J6I64qUIOybuSDtjpjsnbTsp4Ag66eB7YGs6rCAIOustOyXh-yduOyngCDsib3qsowg7JWM66Ck7KSEIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiDqsIDsnqUg6rCE64uo7ZWcIO2Yle2DnOydmCDsgqzsnbTtirjrp7XsnYAgc2l0ZW1hcC54bWwg7YyM7J2866GcLCDsl6zquLDsl5DripQg7Ju57IKs7J207Yq47J2YIFVSTOqzvCDqsIEgVVJM7JeQIOuMgO2VnCDquLDtg4Ag66mU7YOA642w7J207YSwKOyYiDog66eI7KeA66eJIOyXheuNsOydtO2KuCDsi5zqsIQ%2CsiteName_~6re87Ius7J2EIOyeiuuKlCDtlZwg7J6l%2CsiteHost_www.ikxin.com%2Cp_Ii9rby9hcnRpY2xlL3dvcmRwcmVzcy1waHAteG1sLXNpdGVtYXAi%2Cs_HGg1MFP7WAgB5wJ5.png"
  "og:image:alt": "순수 PHP 코드로 sitemap.xml 사이트맵 생성 - 근심을 잊는 한 장"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "순수 PHP 코드로 sitemap.xml 사이트맵 생성"
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~7Iic7IiYIFBIUCDsvZTrk5zroZwgc2l0ZW1hcC54bWwg7IKs7J207Yq466e1IOyDneyEsSAtIOq3vOyLrOydhCDsnorripQg7ZWcIOyepQ%2Cc_Article%2Ctitle_~7Iic7IiYIFBIUCDsvZTrk5zroZwgc2l0ZW1hcC54bWwg7IKs7J207Yq466e1IOyDneyEsQ%2Cdescription_~7IKs7J207Yq466e17J2AIOybueyCrOydtO2KuCDqtIDrpqzsnpDqsIAg6rKA7IOJIOyXlOynhOyXkCDsnpDsi6DsnZgg7Ju57IKs7J207Yq47JeQ7IScIO2BrOuhpOunge2VoCDsiJgg7J6I64qUIOybuSDtjpjsnbTsp4Ag66eB7YGs6rCAIOustOyXh-yduOyngCDsib3qsowg7JWM66Ck7KSEIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiDqsIDsnqUg6rCE64uo7ZWcIO2Yle2DnOydmCDsgqzsnbTtirjrp7XsnYAgc2l0ZW1hcC54bWwg7YyM7J2866GcLCDsl6zquLDsl5DripQg7Ju57IKs7J207Yq47J2YIFVSTOqzvCDqsIEgVVJM7JeQIOuMgO2VnCDquLDtg4Ag66mU7YOA642w7J207YSwKOyYiDog66eI7KeA66eJIOyXheuNsOydtO2KuCDsi5zqsIQ%2CsiteName_~6re87Ius7J2EIOyeiuuKlCDtlZwg7J6l%2CsiteHost_www.ikxin.com%2Cp_Ii9rby9hcnRpY2xlL3dvcmRwcmVzcy1waHAteG1sLXNpdGVtYXAi%2Cs_HGg1MFP7WAgB5wJ5.png"
  "twitter:image:alt": "순수 PHP 코드로 sitemap.xml 사이트맵 생성 - 근심을 잊는 한 장"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **순수 PHP 코드로 sitemap.xml 사이트맵 생성**

2017.05.26 4,140  0

사이트맵은 웹사이트 관리자가 검색 엔진에 자신의 웹사이트에서 크롤링할 수 있는 웹 페이지 링크가 무엇인지 쉽게 알려줄 수 있도록 합니다. 가장 간단한 형태의 사이트맵은 `sitemap.xml` 파일로, 여기에는 웹사이트의 URL과 각 URL에 대한 기타 메타데이터(예: 마지막 업데이트 시간, 변경 빈도 및 사이트의 다른 URL에 대한 상대적 중요도)를 나열하여 검색 엔진이 웹사이트를 더욱 지능적으로 크롤링할 수 있도록 합니다.

WordPress에서 `sitemap.xml` 사이트맵을 생성하기 위해 국내에서는 이미 전문 플러그인이 개발되어 있습니다. 예를 들어 비교적 유명한 류청의 **Baidu Sitemap Generator**가 있으며, 해외에는 **Google XML Sitemaps**가 있습니다.

하지만 `sitemap.xml` 파일 하나를 생성하기 위해 플러그인을 사용하는 것은 다소 리소스 낭비처럼 느껴져서, 코드로 구현해 보겠습니다! 코드는 인터넷에서 찾은 것이며, 약간 수정하여 태그와 카테고리의 XML 생성을 지원하고 `sitemap.xml` 생성 시간을 추가했습니다.

## PHP 코드

새로운 `sitemap.php` 파일을 만들고 다음 코드를 해당 파일에 작성합니다:

 PHP

```
<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 1000;
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">';
?>
<!-- 生成时间 <?php echo $showtime = date("Y-m-d H:i:s"); ?> -->
<url>
    <loc><?php echo get_home_url(); ?></loc>
    <lastmod><?php $ltime = get_lastpostmodified(GMT); $ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
</url>
<?php
// 文章
$myposts = get_posts("numberposts=" . $posts_to_show);
foreach ($myposts as $post) { ?>
<url>
    <loc><?php the_permalink(); ?></loc>
    <lastmod><?php the_time('c'); ?></lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
</url>
<?php } ?>
<?php
// 页面
$mypages = get_pages();
if (count($mypages) > 0) {
    foreach ($mypages as $page) { ?>
<url>
    <loc><?php echo get_page_link($page->ID); ?></loc>
    <lastmod><?php echo str_replace(" ", "T", get_page($page->ID)->post_modified); ?>+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
</url>
<?php }} ?>
<?php
// 分类
$terms = get_terms('category', 'orderby=name&hide_empty=0');
$count = count($terms);
if ($count > 0) {
    foreach ($terms as $term) { ?>
<url>
    <loc><?php echo get_term_link($term, $term->slug); ?></loc>
    <changefreq>weekly</changefreq>
    <priority>0.4</priority>
</url>
<?php }} ?>
<?php
// 标签
$tags = get_terms("post_tag");
foreach ($tags as $key => $tag) {
    $link = get_term_link(intval($tag->term_id), "post_tag");
    if (is_wp_error($link)) return false;
    $tags[$key]->link = $link;
?>
<url>
    <loc><?php echo $link; ?></loc>
    <changefreq>weekly</changefreq>
    <priority>0.2</priority>
</url>
<?php } ?>
</urlset>
```

`sitemap.php`를 웹사이트 루트 디렉터리에 업로드한 다음 접속하여 결과를 확인합니다.

## 의사 정적화 방법

### Nginx

기존 Nginx 의사 정적 규칙을 편집하고 다음 규칙을 추가한 후 Nginx를 재시작하면 됩니다:

 Nginx

```
rewrite ^/sitemap.xml$ /sitemap.php last;
```

### Apache

웹사이트 루트 디렉터리의 `.htaccess` 파일을 편집하고 다음 규칙을 추가합니다:

 Apache

```
RewriteRule ^(sitemap)\.xml$ $1.php
```

## 순수 정적화 방법

**Linux 예약 작업 + wget으로 `sitemap.xml`을 정기적으로 생성(이 방법은 VPS 사용자에게 적합하며, 가상 호스트에는 적용되지 않음)**

웹사이트 루트 디렉터리의 `sitemap.php` 이름을 자신만 알고 있는 PHP 파일명으로 변경합니다. 예를 들어 `xml.php`로 변경할 수 있습니다.

그런 다음 Linux 예약 작업으로 다음 명령을 실행하여 데이터를 `sitemap.xml`로 저장하고 웹사이트 루트 디렉터리에 두면 됩니다:

 Bash

```
wget -O /home/www/www.ikxin.com/sitemap.xml https://www.ikxin.com/sitemap.php
```

- `https://www.ikxin.com/sitemap.php`는 PHP 경로입니다.
- `/home/www/www.ikxin.com/sitemap.xml`은 XML 파일 저장 경로입니다.

이렇게 하면 `sitemap.xml`이 동적 데이터라는 문제를 해결할 수 있습니다.

## **댓글**

(0)

아직 댓글이 없습니다

## **댓글 작성**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/ko#website","@type":"WebSite","description":"근심을 잊는 한 장은 기술 탐구와 일상을 다루는 개인 웹사이트입니다. 웹 개발, 백엔드 및 DevOps 실무를 기록하고 소프트웨어 도구와 디지털 경험, 코드 밖의 견문과 생각을 나눕니다.","inLanguage":"ko-KR","name":"근심을 잊는 한 장","url":"https://www.ikxin.com/ko","translationOfWork":{"@id":"https://www.ikxin.com/#website"}},{"@id":"https://www.ikxin.com/ko/article/wordpress-php-xml-sitemap#webpage","@type":"WebPage","description":"사이트맵은 웹사이트 관리자가 검색 엔진에 자신의 웹사이트에서 크롤링할 수 있는 웹 페이지 링크가 무엇인지 쉽게 알려줄 수 있도록 합니다. 가장 간단한 형태의 사이트맵은 sitemap.xml 파일로, 여기에는 웹사이트의 URL과 각 URL에 대한 기타 메타데이터(예: 마지막 업데이트 시간","name":"순수 PHP 코드로 sitemap.xml 사이트맵 생성","url":"https://www.ikxin.com/ko/article/wordpress-php-xml-sitemap","isPartOf":{"@id":"https://www.ikxin.com/ko#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/ko/article/wordpress-php-xml-sitemap"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
