웹사이트 검색

Mod_Rewrite 설정 방법


Mod_Rewrite 정보

마지막으로 쇼핑 웹사이트를 방문하여 구매해야 할 특정 항목을 찾았을 때를 생각해 보십시오. 마침내 페이지에 도달했을 때 URL은 다음과 같을 것입니다.

gizmo.com/latest_and_greatest/specific_gadgets/exactly_what_youre_looking_for

이는 이 웹사이트가 구매에 필요한 모든 단일 디렉토리를 설정하는 데 시간이 걸리기 때문이 아니라 Mod_Rewrite라는 편리한 모듈 때문입니다. Mod_Rewrite를 사용하면 필요에 따라 사용자 지정 및 간소화된 URL을 만들 수 있습니다. 실제로 실제 URL은 다음과 유사할 수 있습니다.

http://www.gizmo.com/gp/itemB004RYVI0Q/ref=as_li_ss_tl?

이 튜토리얼은 Mod_Rewrite 활성화, 필수 .htaccess 페이지 생성 및 사용, URL 재작성 설정에 대해 설명합니다.

내용물

  1. Mod_Rewrite 활성화 방법
  2. .htaccess 파일 생성 및 사용 허용 방법
  3. 다시 쓰기 규칙을 사용하는 방법
  4. Rewrite Cond 지시문을 사용하는 방법
  5. 자원

설정

이 자습서의 단계를 수행하려면 사용자에게 루트 권한이 있어야 합니다. 여기의 3단계와 4단계에서 Ubuntu에서 설정하는 방법을 확인할 수 있습니다.

또한 서버에 Apache가 설치되어 있어야 합니다. 없는 경우 다음 명령을 사용하여 Ubuntu용으로 다운로드할 수 있습니다.

sudo apt-get install apache2

섹션 1 - Mod_Rewrites 활성화 방법

실제 URL 재작성 생성을 시작하기 전에 이를 제어하는 apache mod_rewrite 모듈을 활성화해야 합니다. 간단합니다.

sudo a2enmod rewrite

이 명령은 모듈을 활성화하거나 이미 활성화된 경우 "Module rewrite already enabled"라는 단어를 표시합니다.

섹션 2—.htaccess 파일 정보:

모듈이 활성화되면 웹사이트 디렉토리에 .htaccess 파일을 생성하여 URL 재작성을 설정할 수 있습니다.

.htaccess 파일은 서버 구성 파일을 변경할 필요 없이 웹 사이트의 세부 정보를 구성하는 방법입니다. 파일 이름을 시작하는 기간은 폴더 내에서 숨겨진 파일을 유지합니다.

또한 .htaccess 파일의 위치도 중요합니다. 해당 파일의 구성은 해당 디렉토리와 그 아래의 디렉토리에 있는 모든 항목에 영향을 미칩니다.

텍스트 편집기에서 .htaccess 파일을 만든 다음(다른 확장자나 이름 없이 .htaccess로만 이름 지정) ftp 클라이언트를 통해 사이트에 업로드할 수 있습니다.

또는 이 명령을 사용하여 example.com을 사이트 이름으로 대체하여 터미널에 .htaccess 파일을 만들 수 있습니다.

sudo nano /var/www/example.com/.htaccess

.htaccess 파일의 변경을 허용하는 방법:

.htaccess 파일이 표준 웹 사이트 구성을 재정의하도록 허용하려면 먼저 구성 파일을 여십시오. NB: 이 단계에서는 sudo 권한이 필요합니다.

sudo nano /etc/apache2/sites-available/default

해당 파일 내부에서 다음 섹션을 찾아 AllowOverride라는 줄을 없음에서 모두로 변경합니다. 섹션은 이제 다음과 같아야 합니다.

 <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
 </Directory>

해당 파일을 저장하고 종료한 후 Apache를 다시 시작하십시오. 이제 모든 사이트에서 .htacess 파일을 사용할 수 있습니다.

sudo service apache2 restart

이제 사이트의 URL을 다시 작성할 준비가 모두 완료되었습니다.

섹션 3 - URL 재작성 방법

전체 URL 재작성 작업은 .htaccess 파일 내에서 이루어집니다.

전반적으로 모든 URL 재작성 명령은 동일한 패턴을 따릅니다.

 RewriteRule Pattern Substitution [OptionalFlags]

다음은 각 부분에 대한 간단한 설명입니다.

  • RewriteRule: 사용하려는 mod_rewrite 지시문의 이름을 작성할 수 있는 섹션입니다.
  • 패턴: 이 섹션은 정규 표현식을 사용하여 요청된 URL을 해석하는 데 전념합니다. 이 자습서에는 정규식에 대한 설명이 포함되어 있지 않지만 여기에서 해당 주제에 대한 유용한 자습서를 찾을 수 있습니다.
  • 대체: 표시하려는 정보가 있는 페이지의 실제 URL입니다. php 매개 변수 또는 긴 숫자 문자열로 인해 기억하기 어렵거나 혼란스러울 수 있습니다. 예. www.cityzoo.com/animals.php?mammals=seals
  • 선택적 플래그: 플래그는 표현식의 동작을 변경할 수 있는 재작성 규칙 지시어의 끝에 있는 태그입니다. 일부 공통 플래그에는 [F], URL 금지, [NC], 규칙에서 대문자를 무시하도록 강제, [R=301] 또는 [R=302], 사용하려는 리디렉션 코드 제어, [L]이 있음을 나타냅니다. 이것은 시리즈의 마지막 규칙입니다.

세 가지 URL 재작성 예:

예 1: 페이지 A로 이동하여 페이지 B 찾기:

이것은 URL 재작성에 대한 가장 기본적인 예입니다. 사이트 방문자가 브라우저에 하나의 URL을 입력하지만 다른 URL로 리디렉션됩니다.

계속해서 사이트에 대해 별도의 두 페이지를 만들어 보겠습니다. 하나는 Apples(apples.html)이고 다른 하나는 Oranges(oranges.html)입니다.

코드를 Apple 페이지에 복사합니다.

<html>
  <head>
    <title>Apples</title>
  </head>
  <body>
    <h1>This page is about Apples</h1>
  </body>
</html>

그런 다음 주황색 페이지를 만들고 모든 과일 이름을 해당 과일 이름으로 대체할 수 있습니다.

이제 .htaccess 파일을 엽니다.

sudo nano /var/www/example.com/.htaccess

다음 URL 재작성 명령을 파일에 추가합니다.

RewriteEngine on
RewriteRule ^oranges.html$ apples.html

저장 및 종료.

모든 것이 준비되면 "/oranges.html"로 끝나는 사이트를 방문하십시오. 표시되는 모든 정보는 "/apple.html" 사이트에서 가져옵니다.

이제 설명:

  • ^oranges.html: 페이지 시작 방법을 나타냅니다. 캐럿(^)은 문자열의 시작을 나타냅니다. 즉, URL을 다시 작성하려는 페이지가 oranges 이외의 것으로 시작하는 경우(예: navel_oranges.html) 다시 쓰기 규칙에서 인식하지 못하고 apples.html로 리디렉션되지 않습니다.
  • $: 달러 기호는 URL 끝을 나타냅니다. 문자열의 마지막 문자 뒤에 다른 것이 있으면 다시 쓰기 규칙에서 웹 페이지를 동일하게 인식할 수 없습니다.
  • apples.html: 브라우저가 실제로 트래픽을 보내는 곳입니다.

예 2: 웹사이트의 URL에 매개변수가 있습니다. 하위 디렉토리처럼 보이게 만드는 방법.

첫 번째 예는 단순히 다른 사이트로 대체해야 하는 사이트를 참조했습니다. 그러나 아래 인스턴스는 URL에 매개변수가 있을 때 볼 수 있는 일반적인 시나리오를 다룹니다.

다음 URL을 확인하세요.

http://example.com/results.php?products=apple

다음과 같이 훨씬 더 명확하게 표시됩니다.

 http://example.com/products/apple

.htaccess 파일 내의 행은 다음과 같습니다.

RewriteEngine on
RewriteRule ^products/([A-Za-z0-9-]+)/?$ results.php?products=$1 [NC]

이제 설명:

  • ^products: 포착되어 경로를 다시 지정하려면 URL이 products로 시작해야 합니다(이는 도메인 이름 뒤의 텍스트만 참조함을 명심하십시오). 다른 것으로 시작하면 규칙이 적용되지 않고 URL이 동일하게 유지됩니다.
  • ([A-Za-z0-9-]+): 괄호 안의 내용은 URL에 입력할 수 있는 모든 정보를 나타냅니다. 즉, 사이트 방문자가 /products/ 다음에 입력하는 내용을 반영하도록 URL이 다시 작성됩니다.
  • +: 더하기 기호는 괄호 안의 내용이 하나 이상의 문자일 수 있음을 나타냅니다(문자 또는 숫자인 단일 문자와 반대).
  • /?$: 달러 기호는 문자열의 끝을 가리킵니다. 물음표는 문자열의 마지막 문자가 슬래시가 되도록 허용합니다(필수는 아니지만).
  • results.php?products=$1: $1은 패턴의 문자열이 가야 할 위치를 나타냅니다. 즉, 사람들이 "([A-Za-z0-9-]+):" 부분에 쓴 내용에서 캡처한 정보를 입력합니다. 프로세스가 완료되면 브라우저는 두 번째 URL의 정보를 표시합니다.
  • [NC]: 구문 끝에 있는 플래그로, 규칙이 문자열에 있는 모든 문자의 대소문자를 무시해야 함을 나타냅니다.

예 3: 사이트에 다루기 힘든 URL이 있습니다. 청소 방법

이러한 종류의 상황은 URL이 길고 복잡할 때 발생할 수 있습니다.

아래 URL을 예로 들어 보겠습니다.

http://example.com/results.php?products=produce&type=fruit&species=apple

URL은 올바른 콘텐츠를 전달하는 데 효과적이지만 소비자에게는 그다지 기억에 남지 않습니다. URL을 재작성하면 URL을 더 간단하고 명확한 것으로 변환할 수 있습니다.

http://example.com/produce/fruit/apple

이 작업을 수행하려면 .htaccess 파일에 다음 줄이 필요합니다(.htaccess 파일에 필요한 만큼 섹션을 추가할 수 있음).

RewriteEngine on
RewriteRule ^(meat|produce|dairy)/([^/.]+)/([^/.]+)$ results.php?products=$1&type=$2&species=$3

이제 설명:

  • 먼저 ^(캐럿)이 표현식을 시작합니다.
  • (meat|produce|dairy): 입력할 수 있는 옵션을 제한하려는 경우 허용되는 유일한 값을 지정할 수 있습니다. 이 경우 다양한 식료품입니다. 위의 3가지 키워드 중 하나만 입력하면 URL 재작성이 되지 않습니다.
  • ([^/.]+)는 캐럿 뒤에 오는 문자(이 경우 슬래시 또는 마침표) 외에 슬래시 사이에 무엇이든 쓸 수 있음을 나타냅니다.
  • results.php?products=$1&type=$2&species=$3: 괄호 안의 각 값이 추출된 다음 표현식의 대체 부분에서 더 긴 URL에 적용됩니다. $1은 첫 번째 괄호, $2, 두 번째, $3, 세 번째를 나타냅니다.