최초 작성일 : 2023-09-05 | 수정일 : 2023-09-05 | 조회수 : 235 |
사이트맵(Sitemap)을 PHP로 동적으로 생성하려면 기본적으로 XML 형식에 맞게 콘텐츠를 출력해야 한다.
아래는 간단한 PHP 코드 예제로, 동적으로 사이트맵을 생성하는 방법을 보여준다.
- 데이터베이스 연결 설정 (예제에서는 MySQL을 사용한다):
php$host = 'localhost';
$db = 'my_database';
$user = 'my_user';
$pass = 'my_password';
$charset = 'utf8mb4';
$dsn = 'mysql:host=$host;dbname=$db;charset=$charset';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $options);
- 사이트맵 생성:
php// Content type 설정
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version='1.0' encoding='UTF-8'?>' . PHP_EOL;
echo '<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>' . PHP_EOL;
// 여기서는 예제로 articles 테이블에서 게시글 URL을 가져옵니다.
$stmt = $pdo->query('SELECT id, last_modified_date FROM articles');
while ($row = $stmt->fetch())
{
echo '<url>' . PHP_EOL;
echo '<loc>https://yourdomain.com/article.php?id=' . $row['id'] . '</loc>' . PHP_EOL; // 여기에 실제 도메인과 경로를 입력해야 한다.
echo '<lastmod>' . $row['last_modified_date'] . '</lastmod>' . PHP_EOL; // ISO 8601 형식의 날짜가 필요하다.
echo '<changefreq>monthly</changefreq>' . PHP_EOL; // 이것은 예시로, 실제 변경 빈도에 따라 조정이 필요하다.
echo '<priority>0.8</priority>' . PHP_EOL; // 1.0이 가장 높은 우선순위, 0.1이 가장 낮습니다.
echo '</url>' . PHP_EOL;
}
echo '</urlset>';
위 코드는 간단한 예시이므로 실제 사용할 때는 보다 구체적인 로직과 예외 처리, 최적화 등의 작업이 필요하다.
또한, 웹사이트의 크기와 구조에 따라 추가적인 URL들을 사이트맵에 포함시켜야 할 수도 있다.