웹사이트 검색

Apache에서 mod_rewrite를 사용하여 내부 리디렉션을 수행하는 방법


이 기사와 다음 기사에서는 mod_rewrite를 사용하여 특정 HTTP 요청을 웹사이트의 다른 페이지나 외부 URL에 매핑하는 방법을 설명합니다.

즉, 이 잘 알려진 Apache 모듈을 사용하면 URL을 다른 URL로 리디렉션할 수 있으며, 이를 실제 사례를 통해 설명하겠습니다.

권장 읽기: Apache 웹 서버 성능을 향상시키는 5가지 팁

참고: 아래 예에서는 사용자가 Perl 호환 정규 표현식(PCRE)에 어느 정도 익숙하다고 가정합니다. 해당 주제는 이 기사의 범위를 벗어나므로 PCRE에 대한 자세한 내용은 Perl 5 버전 24.0 문서를 참조하세요.

계속하기 전에 다시 쓰기 모듈이 로드되었는지 확인하세요. 이것이 CentOS 및 유사한 배포판의 기본 동작이지만, Debian 및 파생 버전에서는 다음과 같이 수동으로 로드해야 합니다.

a2enmod rewrite

mod_rewrite 모듈을 사용하도록 Apache 구성

단순화를 위해 CentOS 7 상자(IP 192.168.0.100)의 기본 사이트를 사용하여 mod_rewrite 사용 방법을 설명하겠습니다( DocumentRoot: /var/www/html, 구성 파일: /etc/httpd/conf/httpd.conf).

Apache가 이 모듈을 사용하려면 구성 파일에 다음 줄을 추가하십시오.

RewriteEngine on

이 구성은 동일한 상자에 있는 가상 호스트에 의해 상속되지 않는다는 점에 유의하는 것이 중요합니다.

따라서 재작성 규칙을 사용하려는 각 가상 호스트에 대해 RewriteEngine을 추가해야 합니다.

내부 리디렉션: URL을 동일한 가상 호스트의 다른 URL로 매핑

내부 리디렉션은 mod_rewrite의 가장 간단한 예입니다. default.aspx에 대한 모든 요청을 index.html로 리디렉션하려면 RewriteEngine 아래에 다음 줄(재작성 규칙이라고도 함)을 추가하세요. 켜기:

RewriteRule "^/default\.aspx$" "/index.html"

변경 사항을 적용하려면 Apache를 다시 시작하는 것을 잊지 마십시오.

이는 사이트가 원래 ASP를 사용하여 디자인되었고 나중에 일반 HTML5로 변경된 경우 유용할 수 있습니다. 검색 엔진에는 .aspx 파일이 색인화되어 있지만 해당 파일은 더 이상 존재하지 않습니다.

이 경우 잠재 방문자가 오류 페이지에 접속하지 않도록 요청을 리디렉션하는 방법을 찾아야 합니다. 테스트하려면 /var/www/html 내에 다음 내용이 포함된 index.html이라는 간단한 HTML 파일을 만들어 보겠습니다.

<!DOCTYPE html>
<html>
  <head>
	<meta charset="utf-8">
	<title>New site</title>
  </head>
  <body>
	<h2>Default.aspx was here, but now it's index.html</h2>
  </body>
</html>

캐럿달러 기호를 사용하면 정규 표현식이 /default로 시작하고 .aspx 로 끝나는 모든 문자열과 일치합니다. 각각.

권장 읽기: Apache 성능을 최대 10배까지 높이려면 Mod_Pagespeed를 설치하세요.

이제 브라우저를 실행하고 192.168.0.100/default.aspx를 지정하세요. 상황이 예상대로 진행되면 Apache는 대신 index.html을 제공해야 합니다.
그러나 최종 사용자에게는 주소 표시줄에 default.aspx가 계속 표시되므로 변경 내용이 완전히 투명해집니다.

서버가 default.aspx라는 페이지 대신 index.html을 실제로 제공하고 있음을 주소 표시줄의 URL에 표시하려면 [R, L]을 다시 쓰기 규칙의 끝에 다음과 같이 추가합니다.

RewriteRule "^/default\.aspx$" "/index.html" [R,L]

여기서 [R,L]은 완전한 HTTP 리디렉션이 브라우저 (R)에 실행되어야 하고 추가 규칙이 처리되지 않아야 함을 나타내는 두 개의 선택적 플래그입니다.

이제 주소 표시줄에 이전과 마찬가지로 default.aspx 대신 예상대로 index.html가 어떻게 표시되는지 확인하세요.

요약

이 기사에서는 mod_rewrite를 사용하여 내부 리디렉션을 수행하는 방법을 설명했습니다. 다른 서버로 이동된 리소스로 리디렉션하는 방법과 사용자 브라우저에 따라 맞춤 콘텐츠를 표시하는 방법을 알아보는 다음 게시물을 기대해 주세요. 그때까지는 사용 가능한 재작성 플래그의 전체 목록을 보려면 Apache 2.4 문서를 참조하세요.

언제나 그렇듯이, 이 기사에 대해 질문이나 피드백이 있으면 아래 의견 양식을 자유롭게 사용하십시오. 여러분의 의견을 기다리겠습니다!