php 사이트맵
본문
어떻게 만들고 등록하나요? 초보입니다.ㅜ
답변 3
사이트맵(Sitemap)은 웹사이트의 구조를 검색 엔진(크롤러)에 제공하기 위한 파일로,
일반적으로 XML 형식으로 작성합니다.
방법은 많으나 두 가지 소개합니다.
1. ♠ 편집기 사용 수작업
*텍스트 편집기를 열어 아래 예제와 같이 작성
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/</loc>
<lastmod>2024-12-21</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about/</loc>
<lastmod>2024-12-20</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
- <loc> 태그 안에 사이트 URL을 작성.
- <lastmod>는 마지막 수정일, <changefreq>는 변경 빈도, <priority>는 우선순위
- <priority>: 홈 페이지(1.0), 주요 페이지(0.8), 기타 페이지(0.5 이하)
- <changefreq>: 매일 변경되는 페이지(daily), 월별 업데이트(monthly),
자주 변경되지 않는 페이지(yearly)
*파일 이름을 sitemap.xml로 저장.
- sitemap.xml를 sitemap.txt로 카피한 파일도 웹사이트 루트 디렉터리에 같이 두세요.
- sitemap.txt를 추가하는 것은 단순 URL 리스트를 의미하며,
검색 엔진에 별도로 제공될 수 있기 때문입니다.
*FTP나 서버 파일 매니저를 통해 웹사이트 루트 디렉터리에 업로드.
*Google Search Console, Bing Webmaster Tools 등에 접속 후,
"Sitemaps" 메뉴에서 "https://example.com/sitemap.xml"을 제출.
2. ♠ 파일에서 URL을 읽어 사이트맵을 동적으로 생성하는 PHP 스크립트
*urls.txt라는 파일에 URL 목록을 작성
/
/about
/contact
/products
/products/item1
*PHP 스크립트
<?php
header("Content-Type: application/xml; charset=utf-8");
$base_url = "https://example.com";
$file_path_txt = "urls.txt";
if (!file_exists($file_path_txt)) {
die("Error: 'urls.txt' 파일이 존재하지 않습니다.");
}
$urls = file($file_path_txt, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!$urls || count($urls) === 0) {
die("Error: 'urls.txt'에 URL이 없습니다.");
}
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
foreach ($urls as $url) {
echo " <url>\n";
echo " <loc>{$base_url}{$url}</loc>\n";
$file_path_html = $_SERVER['DOCUMENT_ROOT'] . "{$url}.html";
if (file_exists($file_path_html)) {
$lastmod = date('Y-m-d', filemtime($file_path_html));
echo " <lastmod>{$lastmod}</lastmod>\n";
}
$changefreq = ($url === '/') ? 'daily' : 'weekly';
$priority = ($url === '/') ? '1.0' : '0.8';
echo " <changefreq>{$changefreq}</changefreq>\n";
echo " <priority>{$priority}</priority>\n";
echo " </url>\n";
}
echo "</urlset>";
* PHP 파일을 서버 루트 디렉토리에 업로드 후
"https://example.com/sitemap.php"로 접속하면 XML 형식의 사이트맵이 출력됩니다.
3. ☆ 이외의 방법 ☆
*https://www.xml-sitemaps.com (온라인 자동 생성 도구 사용)
*WordPress: Yoast SEO 또는 All in One SEO 플러그인 사용.
!-->!-->!-->배포되고 있는 것들 먼저 이용해 보시고,
맘에 안 들면 원하시는 자세한 사항 준비 후 의뢰해 보세요.
`<urlset>`: 사이트맵의 루트 요소
`<url>`: 각 웹 페이지에 대한 요소
`<loc>`: 페이지의 URL
`<lastmod>`: 페이지의 마지막 수정 날짜(YYYY-MM-DD 형식)
선택적 요소:
`<changefreq>`: 페이지가 얼마나 자주 변경되는지(항상, 매시간, 매일, 매주, 매월, 매년)
`<priority>`: 페이지의 상대적 중요성(0.0~1.0)
`<image>`: 페이지에 있는 이미지의 URL
예시: 다음은 3개의 페이지가 있는 사이트맵의 예입니다.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2023-03-08</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2023-03-07</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://example.com/contact</loc>
<lastmod>2023-03-06</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
!-->