인프라

[apache] mod_rewrite 이용하여 www 자동으로 붙여주자

소행성왕자 2024. 11. 14. 15:06

mod_rewrite 모듈 활성화 확인:

대부분의 경우, AlmaLinux와 같은 RHEL 기반 배포판에서는 mod_rewrite가 기본적으로 활성화되어 있습니다.

# httpd -M | grep rewrite

출력에 rewrite_module (shared) 나타나면 이미 활성화된 것입니다.

.htaccess 파일 사용 허용:
.htaccess 파일에서 URL 재작성 규칙을 설정할 있도록 허용하려면, 다음과 같이 아파치 설정 파일에서 AllowOverride 지시자를 수정합니다

<Directory "/var/www/html">   
	AllowOverride All
</Directory>

.htaccess 파일 생성:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteEngine On

이 줄은 Apache의 mod_rewrite 엔진을 활성화합니다.

mod_rewrite는 URL을 동적으로 변경할 수 있게 해주는 Apache 모듈입니다.

RewriteCond %{HTTP_HOST} !^www\. [NC]

이는 리다이렉트를 위한 조건(condition)을 설정합니다.

%{HTTP_HOST}는 요청된 호스트 이름을 나타냅니다.

!^www\.는 "www."로 시작하지 않는 호스트 이름을 의미합니다.

[NC]는 대소문자를 구분하지 않음(No Case)을 의미합니다.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

이는 실제 리다이렉트 규칙입니다.

^(.*)$는 URL의 전체 경로를 캡처합니다.

http://www.%{HTTP_HOST}/$1는 새로운 URL을 생성합니다. 여기서 www.가 추가됩니다.

$1은 원래 URL의 경로 부분을 나타냅니다.

[R=301,L]는 플래그입니다:

R=301은 영구 리다이렉트(301 Moved Permanently)를 의미합니다.

L 규칙이 마지막(Last) 규칙임을 나타냅니다.


.htaccess 사용하지 않고 아파치 설정파일 수정

<VirtualHost *:80>
  ServerName test.com
  DocumentRoot /home/ddf/
  
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>