웹 개발 · 3 min read · Jan 02, 2026
모드 리라이트의 유용한 사용법
모드 리라이트의 유용한 사용법
저자: Mike Ems
이 튜토리얼에서는 모드 리라이트가 무엇인지와 그 사용 예를 몇 가지 가르쳐 드리겠습니다. 모드 리라이트는 강력한 도구이며 웹사이트를 SEO 친화적으로 만드는 가장 간단한 방법 중 하나입니다.
모드 리라이트란?
모드 리라이트는 요청된 URL을 즉석에서 재작성할 수 있는 아파치 서버의 일부입니다. 무한한 수의 규칙을 지원하며, 그에 따라 무제한의 규칙 조건이 붙을 수 있어 매우 유연하고 중요한 URL 조작 메커니즘입니다. 이는 인터넷 사용자와 검색 엔진 친화적인 URL에 사용될 수 있습니다. 이는 데이터베이스 기반 웹사이트가 색인화될 가능성을 높입니다.
모드 리라이트 활성화 / 설치하기
먼저, 서버에 mod_rewrite가 있는지 확인해야 합니다. 기본적으로 아파치에는 mod_rewrite가 설치되어 있지만 활성화되어 있지 않습니다. 서버에서 mod_rewrite가 활성화되어 있는지 테스트하는 가장 쉬운 방법은 /modrewrite-test/와 같은 테스트 디렉토리에 .htaccess 파일을 생성하고 다음 내용을 추가하는 것입니다:
Options +FollowSymLinks
RewriteEngine On이제 하위 디렉토리에 접근해 보십시오. 두 가지 일이 발생할 수 있습니다:
- 오류 없음 축하합니다, mod_rewrite 엔진이 이제 활성화되었습니다.
- 500, 내부 서버 오류 이 메시지가 표시되면 mod_rewrite가 서버에 설치되지 않았거나 활성화되지 않은 것입니다.
서버에 mod_rewrite가 설치되지 않은 경우 다음 단계를 따르십시오.
- httpd.conf 파일을 찾습니다 (보통 conf, config 또는 이와 유사한 폴더에서 찾을 수 있습니다)
- httpd.conf 파일 내에서 LoadModule rewrite_module modules/mod_rewrite.so 행의 주석을 제거합니다 (행 앞의 # 기호를 제거합니다)
- ClearModuleList 행이 주석 해제되어 있는지 확인한 후 AddModule mod_rewrite.c 행이 주석 처리되지 않았는지 확인합니다.
이 단계를 완료한 후 다음 명령어로 아파치 서버를 재시작합니다.
/etc/init.d/httpd restart이제 mod_rewrite가 성공적으로 활성화되었습니다. 아파치 서버가 재시작된 후 mod_rewrite를 다시 테스트하십시오.
모드 리라이트를 사용하여 항상 / www 제거하기
많은 웹사이트에서 쉽게 해결할 수 있는 문제는 검색 엔진에서 중복 결과가 발생하는 것입니다. 특정 검색 엔진에서 http://www.example.com/과 http://example.com은 완전히 다른 웹사이트입니다. 이는 웹사이트의 콘텐츠가 중복 콘텐츠로 식별되기 때문에 큰 문제이며, 이는 검색 엔진 순위를 낮추는 원인이 됩니다. 우리의 새로운 친구인 mod_rewrite를 사용하여 이 문제를 해결할 수 있습니다.
모든 .htaccess 파일의 맨 위에서 모드 리라이트를 켜야 합니다. 이는 항상 .htaccess 파일의 맨 위에 있어야 합니다. 모드 리라이트를 한 번만 켜면 됩니다.
RewriteEngine On또한 Rewrite Base를 설정해야 합니다. 이는 일반적으로 .htaccess 파일이 위치한 디렉토리입니다. .htaccess 파일이 루트 폴더에 위치한 경우 Rewrite Base는 다음과 같이 보일 것입니다:
RewriteBase /이제 두 가지 옵션 중에서 선택할 수 있습니다. www를 항상 제거하거나 항상 유지할 수 있습니다. www를 항상 제거하려면 (내가 선호하는 방법) 루트 디렉토리에 .htaccess 파일을 생성합니다. 그 파일 내에 다음을 추가합니다:
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]마찬가지로 www를 항상 추가하고 싶다면 .htaccess 파일에 다음을 추가하십시오:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301]example.com을 귀하의 도메인으로 변경하는 것을 잊지 마십시오.
모드 리라이트를 사용하여 URL 정리하기
모드 리라이트의 가장 인기 있는 사용법은 웹사이트의 URL을 정리하는 것입니다. 여러분이 알든 모르든, 검색 엔진은 많은 인수를 가진 URL을 그다지 좋아하지 않습니다. 예:
http://www.example.com/index.php?p=aboutmod_rewrite 아파치 모듈의 힘을 통해 이 URL을 훨씬 더 깔끔하게 만들 수 있습니다.
http://www.example.com/about.html이 작업을 수행하기 위해 우리는 정규 표현식을 사용합니다. 여러분이 지금 정말 흥미로워하고 있다는 것을 압니다. 위의 재작성을 수행하기 위해, www 추가/제거 행 다음에 .htaccess 파일에 다음을 추가했습니다.
RewriteRule ^([^/]+).html$ /index.php?p=$1 [QSA,L,NC]이 행을 자세히 살펴보면 실제로 무엇을 하고 있는지 이해할 수 있습니다.
([^/]+)이는 슬래시를 제외한 모든 것을 일치시키는 정규 표현식입니다. URL 재작성 시 두 개의 슬래시 사이에 있는 모든 것을 일치시키는 가장 쉬운 방법입니다.
.html이는 URL의 끝에 .html을 추가합니다. 이는 PHP 파일에 일반 .html 파일처럼 보이게 합니다.
/index.php?p=$1이는 재작성의 출처 위치입니다. 첫 번째 부분에서 특정 문자열과 일치하는 정규 표현식이 있을 때마다 이 부분에서 참조해야 합니다. $1은 행의 첫 번째 절반에서 첫 번째 정규 표현식을 참조합니다. 따라서 변수 p에 할당된 모든 값은 행의 첫 번째 절반에서 첫 번째 정규 표현식이 있는 위치에 배치됩니다.
URL이 디렉토리처럼 보이게 하려면 이전에 제공된 대신 이 행을 사용해야 합니다.
RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L,NC]이것은 다음과 같은 URL을 반환합니다:
http://www.example.com/about/URL에 후행 슬래시 추가하기
URL에 후행 슬래시를 추가하는 주된 목적은 서버 성능을 높이는 것입니다. 파일 확장자로 끝나지 않는 URL의 끝에 후행 슬래시가 추가되면 서버에 자신에게 한 번만 호출하라고 지시하여 서버 트래픽을 줄입니다.
파일 확장자로 끝나지 않는 URL에 항상 후행 슬래시를 추가하려면, 예를 들어 http://www.example.com과 같은 경우, 루트 디렉토리에 있는 .htaccess 파일에 다음을 추가하십시오.
rewriteCond $1 !/$
rewriteCond %{REQUEST_FILENAME}/ -d
rewriteRule (.+) http://www.example.com/$1/ [R=301,L]첫 번째 행은 후행 슬래시가 없는지 확인합니다. 두 번째 행은 주어진 URL에 후행 슬래시가 추가되었을 때 해당 디렉토리가 존재하는지 확인합니다. 세 번째 행은 후행 슬래시를 추가하고 사용자를 리디렉션합니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.