안녕하세요. 피코소프트 백승흔입니다.
피코소프트 게시판 설계 과정에서 Slug 기능을 개발하게 되었으며, 이에 대한 주요 특징과 기술적인 내용을 간단히 정리하였습니다.
slug는 특정 콘텐츠(게시글, 페이지 등)를 식별하기 위해 사용되는 짧고 읽기 쉬운 URL-friendly 문자열입니다.
대부분의 CMS(워드프레스, WIX 등)에서는 자동 생성 기능을 제공합니다.
https://www.picosoft.kr/service/poster-design/
# 위 URL은 slug 형태로 피코소프트의 서비스 중, 포스터 디자인에 대해 설명하는 페이지입니다.
Slug의 특징
사람이 읽을 수 있음 : 123?post_id=5 대신 how-to-make-a-website처럼 의미를 전달
검색엔진(SEO)에 좋음 : 키워드가 URL에 포함되므로 검색 랭킹에 도움
공유/복사하기 쉬움 : 간결하고 이해하기 쉬운 URL 구조
Slug가 사용되는 곳
게시물 URL : /blog/how-to-write-slugs/
제품 URL : /products/red-sneakers/
FAQ, 페이지, 메뉴 : /faq/홈페이지-제작/
Slug 기반 라우팅
1. 데이터베이스(DB) 구조
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
slug VARCHAR(20) UNIQUE,
content TEXT
);
게시물을 Slug로 조회하기 위해서는, Slug 값이 중복되지 않도록 UNIQUE 제약 조건을 설정하여 유일성을 보장해야 합니다.
2. .htaccess (Apache mod_rewrite)
RewriteEngine On
# /post/slug-값 → index.php?slug=slug-값
RewriteRule ^post/([^/]+)/?$ index.php?slug=$1 [L,QSA]
3. PHP 라우팅 예시
<?php
// URL에서 slug 받기
$slug = $_GET['slug'] ?? null;
if ($slug) {
$stmt = $mysqli->prepare("SELECT * FROM posts WHERE slug = ?");
$stmt->bind_param("s", $slug);
$stmt->execute();
$result = $stmt->get_result();
$post = $result->fetch_assoc();
if ($post) {
echo "<h1>{$post['title']}</h1>";
echo "<div>{$post['content']}</div>";
} else {
http_response_code(404);
echo "게시글을 찾을 수 없습니다.";
}
}
?>
그럼 오늘도 좋은 하루 보내세요.
감사합니다.
▶ 해당 게시물 블로그에서 보기
https://blog.naver.com/qortmdgms/223973296140