.htaccess에 문제가 있습니다. mod_rewrite 사용 소개 mod_rewrite로 수행할 수 있는 작업




Mod 재작성 모듈은 규칙 기반 URL 재작성에 사용됩니다. 이 문서에서는 Ubuntu 운영 체제의 Apache 웹 서버에서 Mod 재작성 지원을 활성화하는 방법을 설명합니다.

Mod 재작성 모듈 연결

/etc/apache2/mods-available 디렉토리로 이동하여 Mod rewrite 모듈 로드를 담당하는 rewrite.load 파일이 있는지 확인하세요. 이렇게 하려면 콘솔에서 다음 명령을 실행하세요.

CD /etc/apache2/mods-available ls

파일 목록에 rewrite.load라는 파일이 있어야 합니다.

이제 /etc/apache2/mods-enabled 디렉토리로 이동하여 rewrite.load 파일에 대한 심볼릭 링크를 생성해 보겠습니다. 이렇게 하려면 다음 명령을 실행하세요.

CD /etc/apache2/mods-enabled sudo ln -s ../mods-available/rewrite.load rewrite.load

가상 호스트 설정 변경

다음으로 Mod rewrite 모듈을 사용해야 하는 가상 호스트의 설정을 변경해야 합니다. 이렇게 하려면 특정 호스트에 대한 설정 파일을 열어야 합니다. 예를 들어, localhost라는 호스트에 대한 설정이 포함된 표준 파일 /etc/apache2/sites-available/default를 사용하겠습니다. 다음 명령을 실행하여 GEdit 편집기에서 파일을 엽니다.

Sudo gedit /etc/apache2/sites-available/crocodilus

파일에서 섹션 찾기 AllowOverride None 행을 AllowOverride All로 변경합니다. 다음과 같아야 합니다.

옵션 인덱스 FollowSymLinks MultiViews AllowOverride All 주문 허용, 거부 모두 허용

아파치 다시 시작

이제 남은 것은 명령을 사용하여 Apache 웹 서버를 다시 시작하는 것입니다.

이번 강의에서는 무엇을 설명하나요? mod_rewrite그리고 그것을 사용하는 방법. 301 리디렉션, 친숙한 URL 생성, 이미지 링크 차단 등 세 가지 실제 사례를 다룹니다.

mod_rewrite는 훌륭한 Apache 웹 서버 모듈입니다. 이는 매우 유연하며 많은 유용한 기능을 수행할 수 있습니다.

mod_rewrite를 사용하는 것은 복잡한 구문과 처리 메커니즘으로 인해 초보자에게 어려울 수 있습니다. 그러나 몇 가지 기본 개념을 이해하면 자신의 서버에 mod_rewrite를 효과적으로 사용할 수 있습니다.

이 강의에서는 자신의 웹사이트에 사용할 수 있는 실제 예제를 사용하여 몇 가지 기본 mod_rewrite 규칙을 만드는 방법을 배웁니다. 정규식이 무엇인지 아직 모르는 경우 정규식에 대한 자료를 주의 깊게 연구하는 것이 좋습니다.

mod_rewrite란 무엇인가요?

mod_rewrite는 URL을 조작(변경)하기 위한 Apache 서버 모듈입니다. 이는 종종 방문자로부터 URL 요청을 받아 다른 URL에서 콘텐츠를 보내는 것을 의미합니다. 예를 들어 방문자는 브라우저의 주소 표시줄에 다음 URL을 입력합니다.

http://www.example.com/page.html

일반적으로 Apache는 page.html 파일의 내용을 사용자에게 다시 보냅니다. 그러나 다음과 같이 mod_rewrite를 사용하여 다른 URL에서 콘텐츠를 보낼 수 있습니다.

http://www.example.com/another_page.html

주소 변경은 Apache 서버 내에서 발생한다는 점을 이해하는 것이 중요합니다. 브라우저의 주소 표시줄에는 여전히 http://www.example.com/page.html이 표시되지만 Apache 서버는 http://www.example.com/another_page.html 페이지의 내용을 보냅니다. 이는 브라우저에 다른 URL을 방문하도록 지시하는 HTTP 리디렉션과 다릅니다.

mod_rewrite 모듈을 사용하더라도 HTTP 리디렉션 및 HTTP 오류 코드 반환과 같은 기타 여러 기능을 수행할 수 있습니다.

mod_rewrite로 무엇을 할 수 있나요?

mod_rewrite 모듈을 사용하면 URL 조작 규칙을 만들 수 있습니다. 예를 들어, 요청된 URL에서 얻은 값을 새 URL에 삽입하여 동적 URL 리디렉션을 생성할 수 있습니다. 아니면 HTTP_USER_AGENT(브라우저 종류) 등의 서버 변수를 확인하고, 아이폰에서 실행되는 사파리 등의 브라우저를 사용하는 경우에만 URL을 변경할 수 있습니다.

mod_rewrite가 수행하는 몇 가지 일반적인 기능은 다음과 같습니다.

  • "투박한" URL을 가리는 "친숙한" URL을 생성합니다.예를 들어, 실제 URL www.example.com/display_article.php?articleId=my-article을 멋진 URL www.example.com/articles/my-article/로 마스킹할 수 있습니다. 그리고 모든 사람은 실제 URL 대신 "친숙한" URL을 사용할 수 있습니다.
  • 사이트에서 이미지 링크 사용을 차단하세요.다른 사람이 귀하의 사이트에 호스팅된 이미지를 사용하지 못하도록 하려면 참조 URL이 귀하의 사이트에 속하지 않는 경우 mod_rewrite를 사용하여 "금지됨" 오류를 보낼 수 있습니다.
  • 표준 URL을 리디렉션합니다.많은 페이지는 여러 URL(예: www.example.com/mypage.html 및 example.com/mypage.html)을 통해 액세스할 수 있습니다. mod_rewrite를 사용하면 브라우저를 www.example.com/mypage.html과 같은 "올바른" URL로 영구적으로 리디렉션할 수 있습니다. 무엇보다도 mod_rewrite를 사용하면 검색 결과에 올바른 URL이 표시됩니다.
  • 사이트를 재구성할 때 404 오류를 제거합니다.예를 들어, 웹사이트를 재설계하고 www.example.com/myarticle.html 페이지를 새 URL www.example.com/articles/myarticle.html로 이동했습니다. mod_rewrite를 사용하면 www.example.com/myarticle.html을 www.example.com/articles/myarticle.html로 리디렉션할 수 있으므로 방문자가 이전 URL을 방문할 때 404 "찾을 수 없음" 오류가 발생하지 않습니다. mod_rewrite의 유연성 덕분에 이전 URL에 대한 요청을 새 URL로 리디렉션하는 규칙을 쉽게 만들 수 있습니다.

mod_rewrite를 사용하는 방법

mod_rewrite를 사용하려면 모듈에 수행할 작업을 알려주는 Apache 지시문을 만들어야 합니다. 지시문은 간단한 구성 설정입니다. 지시문은 웹 사이트 루트 폴더의 .htaccess 파일에 배치되는 경우가 많습니다. 지침은 전체 사이트에 적용됩니다.

가장 중요한 두 가지 mod_rewrite 지시문은 다음과 같습니다.

  • RewriteEngine: 현재 요청에 대한 mod_rewrite 메커니즘을 활성화/비활성화합니다.
  • RewriteRule: URL 변경 규칙을 설명합니다.

다음은 간단한 예입니다. 다음 콘텐츠로 .htaccess 파일을 만들어 사이트에 배치하세요.

RewriteRule ^dummy\.html$ http://www.google.com/의 RewriteEngine

이 파일은 다음 설정을 지정합니다.

  • RewriteRule ^dummy\.html$ http://www.google.com/ - 301 리디렉션을 사용하여 dummy.html 페이지에 대한 요청을 Google 웹사이트로 리디렉션합니다.

이제 웹 브라우저를 열고 사이트의 dummy.html 페이지를 방문하면(예: 주소 표시줄에 http://www.example.com/dummy.html 입력) 모든 작업이 오류 없이 완료된 것입니다. , http://www.google.com 사이트로 리디렉션됩니다.

404 오류가 발생하면 호스팅에서 mod_rewrite를 사용하지 않는 것일 수 있습니다. 이 경우 호스팅 관리자에게 문의하셔야 합니다.

RewriteRule 작동 방식

RewriteRule 지시문을 사용하여 리디렉션 규칙을 생성할 수 있습니다. 지시문의 일반적인 구문은 다음과 같습니다.

RewriteRule 패턴 대체

  • 무늬- 정규식 패턴. URL이 패턴과 일치하면 규칙이 실행됩니다. 그렇지 않으면 규칙을 건너뜁니다.
  • 치환- 템플릿에 해당하는 주소 대신 사용될 새 URL입니다.
  • - 규칙의 동작을 결정하는 하나 이상의 플래그입니다.

.htaccess 파일에 필요한 만큼 RewriteRules를 추가할 수 있습니다. mod_rewrite 모듈은 요청이 있을 때마다 모든 규칙을 검토하여 해당 URL을 처리합니다.

규칙이 요청된 URL을 새 주소로 변경하면 .htaccess 파일을 탐색할 때 새 URL이 추가로 사용되며 파일의 추가 위치에 있는 다른 RewriteRule과 일치할 수 있습니다. (이 동작을 변경해야 하는 경우 L 플래그("마지막 규칙")를 사용해야 합니다.)

mod_rewrite 사용의 몇 가지 예

mod_rewrite를 설명하는 가장 쉬운 방법은 실제 문제를 해결하는 데 어떻게 사용되는지 보여주는 것입니다.

예시 1: 404 오류 예외

사이트의 페이지 URL이 변경되는 경우가 있습니다. 이는 콘텐츠가 재구성될 때 발생할 수 있습니다. 검색 엔진이나 다른 사이트가 이전 URL에 링크된 경우 사용자가 해당 링크를 사용하려고 하면 "404 찾을 수 없음" 오류가 표시됩니다.

이 문제를 해결하려면 mod_rewrite 모듈을 사용하여 301 리디렉션을 수행하면 이전 URL을 요청한 모든 브라우저에 HTTP 헤더를 보내 페이지가 새 주소로 이동했음을 알릴 수 있습니다. 또한 검색 엔진에 색인을 새 URL로 업데이트하도록 지시합니다.

다음 .htaccess 파일은 요청을 새 URL로 리디렉션합니다.

RewriteRule ^my-old-url\.html$ /my-new-url.html의 RewriteEngine

RewriteRule은 다음과 같이 작동합니다.

  • ^my-old-url\.html$은 변경할 URL과 일치하는 정규식입니다. 패턴은 "URL의 시작 부분(^)과 일치하고 그 뒤에 "my-old-url.html" 텍스트와 URL 문자의 끝 부분($)이 옵니다."를 의미합니다. 정규식에서 점(.) 문자는 모든 문자와 일치하므로 점(\.)을 찾고 있음을 나타내기 위해 백슬래시를 사용해야 합니다.
  • /my-new-url.html - 변경해야 할 사항을 설명하는 RewriteRule의 두 번째 부분입니다. 이 경우에는 단순히 /my-new-url.html입니다.
  • 대괄호 안에 배치된 하나 이상의 플래그를 포함하는 규칙의 세 번째 부분입니다. 플래그를 사용하면 규칙에 특정 옵션이나 작업을 추가할 수 있습니다. 이 예에서는 2개의 플래그를 사용합니다. R=301은 "새 URL로 301 리디렉션 사용"을 의미합니다. L은 "마지막 규칙", 즉 "규칙과 일치하는 경우 URL 처리 중지"를 나타냅니다.

예 2: 친숙한 URL 만들기

웹사이트에 기사를 표시하기 위해 PHP 스크립트 display_article.php를 작성했다고 가정해 보겠습니다. 다음 URL을 사용하여 기사에 연결할 수 있습니다.

http://www.example.com/display_article.php?articleId=my-article

이 주소는 보기에 좋지 않으며 주소 내부의 쿼리(?articleId=my-article)로 인해 일부 검색 엔진이 혼동될 수 있습니다. 다음과 같은 URL을 사용하는 것이 훨씬 좋습니다.

http://www.example.com/articles/my-article/

mod_rewrite를 사용하여 첫 번째 형식의 링크를 두 번째 형식으로 변환하면 사이트 페이지에서 친숙한 링크를 사용할 수 있으며 누구에게도 표시되지 않는 실제 주소에 액세스할 수 있습니다. 이렇게 하려면 사이트의 루트 디렉터리에 있는 .htaccess 파일에 다음 줄이 포함되어 있어야 합니다.

RewriteRule의 RewriteEngine ^articles/([^/]+)/?$ display_article.php?articleId=$1 [L]

RewriteRule에 대한 설명:

  • ^articles/([^/]+)/?$는 Articles/(article ID)/ 형식의 모든 URL과 일치하는 정규식입니다. "URL의 시작 부분(^)과 일치하고 그 뒤에 텍스트 Articles/ 가 오고 그 뒤에 하나 이상의 슬래시가 아닌 문자([^/]+)가 오고 그 뒤에 슬래시(/?)가 올 수 있습니다. URL 끝 문자($)로 ". 패턴의 [^/]+ 부분 주위에 있는 괄호에 유의하세요. 이렇게 하면 특정 부분에 해당하는 텍스트(예: "my-article" )가 나중에 사용할 수 있도록 저장됩니다.
  • display_article.php?articleId=$1 - 규칙의 이 부분은 Apache 서버가 정규식의 첫 번째 부분에서 [^/]+ 하위 패턴과 일치하는 텍스트가 전달되는 display_article.php 스크립트를 사용하도록 지시합니다(예: "my-article")을 articleId 매개변수로 사용합니다. $1이 호출됩니다. 피드백하위 템플릿에 해당하는 텍스트를 저장합니다. 정규식에 괄호 안에 다른 하위 패턴이 포함되어 있으면 해당 텍스트가 $2 변수에 저장됩니다.
  • [L] - 이전 예와 마찬가지로 주소가 다른 RewriteRules에 의해 변경되지 않도록 플래그를 사용하여 URL의 추가 처리를 중지합니다.

위의 RewriteRule은 http://www.example.com/articles/my-article/ 형식의 요청된 URL을 가져와서 http://www.example.com/display_article.php?articleId=my와 같은 URL로 변환합니다. -기사 .

예 3: 사이트의 이미지 링크 방지

mod_rewrite 모듈이 해결하는 또 다른 일반적인 작업은 다른 웹 프로젝트가 사이트의 이미지에 대한 링크를 사용하는 것을 방지하는 것입니다. 귀하의 사이트 http://www.example.com/mypage.html에 다음 img 태그가 포함된 페이지가 있다고 가정해 보겠습니다.

다른 사이트에서는 다음과 같이 해당 페이지의 사진에 직접 링크할 수 있습니다.

이는 다른 사람의 사이트가 귀하의 이미지를 "빌릴" 뿐만 아니라 귀하의 서버 트래픽 중 일부를 사용하여 해당 페이지에 이미지를 표시한다는 것을 의미합니다. 그리고 다른 사람의 사이트에 방문자 수가 많으면 이 상황이 문제가 될 것입니다!

다음 mod_rewrite 지시어를 사용하면 자신의 사이트가 아닌 다른 모든 사이트에서 이미지 링크를 사용하지 못하게 할 수 있습니다. 사이트의 루트 디렉터리나 보호하려는 이미지가 있는 폴더에 있는 .htaccess 파일에 아래 코드를 넣으세요. example.com을 도메인 이름으로 변경하세요.

RewriteCond %(HTTP_REFERER)의 RewriteEngine !^$ RewriteCond %(HTTP_REFERER) !^http://(www\.)?example\.com/.*$ RewriteRule .+\.(gif|jpg|png)$ - [ 에프]

모든 복사 작업이 완료되면 www.example.com 또는 example.com 이외의 도메인 이름으로 시작하는 URL을 사용하여 사이트의 이미지를 요청하는 모든 브라우저에 "403 Forbidden" 오류가 표시됩니다. 그러면 다른 사이트의 이미지에 대한 링크가 중지됩니다.

이 규칙 세트의 작동 방식은 다음과 같습니다.

  • RewriteEngine on - mod_rewrite 메커니즘을 활성화합니다.
  • RewriteCond %(HTTP_REFERER) !^$ - RewriteCond는 또 다른 mod_rewrite 지시어입니다. 다음 RewriteRule 에 의해 처리되는 URL에 대해 충족되어야 하는 조건을 설정할 수 있습니다. 이 경우 조건은 HTTP_REFERER 변수에 값이 있다는 것입니다.
  • RewriteCond %(HTTP_REFERER) !^http://(www\.)?example\.com/.*$ - 두 번째 RewriteCond 지시문에서는 HTTP_REFERER 변수의 값이 http://www.example.com으로 시작하지 않아야 합니다. / 또는 http://example.com/. 플래그는 대소문자 구분을 설정합니다.
  • RewriteRule .+\.(gif|jpg|png)$ - [F] - 위의 두 가지 이전 RewriteCond 조건이 충족되지 않으면 규칙을 건너뜁니다. URL에 이미지 파일 이름이 포함된 경우(행이 .gif , .jpg 또는 .png로 끝남) 규칙 자체는 "403 Forbidden" 오류([F] 플래그가 사용됨)를 반환합니다. 대체 매개변수의 대시는 " URL을 다른 주소로 바꾸지 마십시오."

즉, .htaccess 파일의 전체 규칙 세트는 HTTP_REFERER 변수에 값이 포함되어 있고 값이 http://example.com/ 또는 http://www.example.com/으로 시작하지 않는 경우와 요청한 URL에 이미지 파일 이름이 포함된 경우 "403 Forbidden" 오류와 함께 요청을 거부해야 합니다.

결론

이 튜토리얼에서는 Apache mod_rewrite 서버 모듈을 사용하여 URL을 조작하는 방법을 소개했습니다. 논의된 세 가지 실제 예는 모듈의 모든 기능 중 일부만을 다루고 있습니다. 러시아어로 된 모드 재작성에 대한 자세한 정보를 찾을 수 있습니다.

중요한:

    파일 지원 ".htaccess" Linux 호스팅에서만 사용할 수 있습니다. Windows에서 함수를 호스팅하는 경우 ".htaccess"파일을 실행합니다 웹.구성.

    지원 모듈 ".htaccess" Linux OS 기반의 모든 공유 호스팅 계획에서 사용할 수 있습니다. CMS 설치 시 지원되지 않는다는 메시지가 나타나는 경우 ".htaccess"그냥 무시하세요.

.htaccess 파일이 없습니다. 어떻게 해야 합니까?

Apache 웹 서버를 설정 중이지만 파일이 없는 경우 .htaccess, 그것을 만들고 필요한 지시어를 적어 두십시오.

만들다 .htaccess, 지침에 따라 호스팅 제어판에 로그인하십시오. 파일을 찾으십시오. .htaccess기사를 사용하여 사이트 디렉토리에: .

실수로 파일을 삭제한 경우 .htaccess, 복원하세요. 또는 표준 파일을 추가하세요. .htaccess CMS의 경우:

.htaccess 파일이 cPanel에 표시되지 않습니다.

cPanel에서 숨겨진 파일(점으로 시작)을 보려면 다음 단계를 따라야 합니다.

모드 재작성을 활성화하는 방법은 무엇입니까?

기준 치수 "mod_rewrite"모든 Linux 호스팅 계획에 존재합니다. 활성화하려면 "mod_rewrite"파일에 추가 .htaccess문자열을 봅니다.

때때로 사람들은 문제에 직면합니다. Apache 서버가 .htaccess 파일을 읽지 않거나 Apache가 URL을 다시 쓰지 않는데 우리는 구성 파일에서 올바른 다시 쓰기 규칙을 사용하고 있습니다. 이는 다시 쓰기 모듈이 Apache에 포함되어 있지 않기 때문에 발생합니다. 서버에서는 mod_rewrite 모듈이 기본적으로 활성화되어 있지 않으므로 rewrite를 사용하려면 mode_rewrite를 수동으로 활성화해야 합니다. 내 기사 "Debian/Ubuntu에서 Apache용 mod_rewrite 모듈 활성화"에서 이를 수행하는 방법을 설명하겠습니다.

1. Apache2에서 mod_rewrite 모듈 활성화

이를 위해 "a2enmod" 명령을 사용하여 Apache 2 웹 서버의 모든 모듈을 활성화합니다. 따라서 다음 명령을 사용하여 Apache용 mod_rewrite 모듈을 활성화합니다.

$ sudo a2enmod 다시 쓰기

2. 가상 호스트에서 ReWrite를 활성화합니다.

Apache용 ReWrite 모듈을 활성화한 후 가상 호스트에 대한 구성 파일에 "AllowOverride All"을 추가해야 합니다. 이 설정은 기본 Apache 구성 파일을 편집하여 전역적으로 활성화할 수도 있습니다.

옵션 인덱스 FollowSymLinks AllowOverride All

3. Apache2 구성 다시 시작

Apache용 mod_rewrite 모듈을 활성화한 후 Apache2 서버를 다시 시작해야 합니다.

# 서비스 apache2 재시작

이제 "Debian/Ubuntu에서 Apache용 mod_rewrite 모듈 활성화" 항목이 완료되었습니다.

마지막으로 온라인 상점을 방문했을 때를 생각해 보세요. 원하는 제품을 찾으면 다음과 같은 URL이 표시될 것입니다.

이는 이 사이트의 개발자가 다양한 제품 카테고리에 대해 별도의 디렉토리를 설정하는 데 많은 시간을 소비했기 때문이 아니라 mod_rewrite라는 편리한 모듈 덕분입니다. 이 모듈을 사용하면 사용자 정의 및 단순화된 URL을 만들 수 있습니다. URL은 실제로 다음과 같습니다.

http://www.buy-online.com/gp/itemB004RYVI0Q/ref=as_li_ss_tl?

이 가이드에서는 이 모듈 활성화, .htaccess 페이지 생성 및 사용, URL 재작성 설정을 다룹니다.

요구사항

또한 먼저 Apache를 설치해야 합니다. Ubuntu에 이 웹 서버를 빠르게 설치하려면 다음 명령을 사용하십시오.

sudo apt-get 설치 apache2

1: mod_rewrite 활성화

먼저 mod_rewrite를 활성화해야 합니다. 매우 간단합니다.

sudo a2enmod 다시 쓰기

이 명령은 모듈을 활성화하거나, 모듈이 이미 활성화된 경우 "모듈 재작성이 이미 활성화되었습니다"라는 메시지를 표시합니다.

2: .htaccess란 무엇입니까?

모듈이 활성화되면 사이트 디렉터리에 .htaccess 파일을 생성하여 링크 재작성을 구성할 수 있습니다.

.htaccess 파일은 서버 구성 파일을 변경하지 않고도 사이트를 세부적으로 조정할 수 있는 방법입니다. 파일 이름을 시작하는 점은 파일이 숨겨져 있음을 의미합니다.

또한 .htaccess 파일의 설정은 이 파일이 위치한 디렉터리의 모든 파일과 하위 디렉터리에 영향을 미치기 때문에 파일의 위치가 중요합니다.

텍스트 편집기를 사용하여 .htaccess 파일을 만든 다음 ftp 클라이언트를 사용하여 사이트에 업로드할 수 있습니다.

메모: 파일은 정확히 .htaccess로 호출되어야 합니다. 파일 이름에는 추가 확장자가 포함되어서는 안 됩니다.

또는 이 명령을 사용하여 터미널을 통해 .htaccess 파일을 생성하고 example.com을 사이트의 도메인 이름으로 바꿀 수 있습니다.

.htaccess 파일 포함

.htaccess 파일이 사이트의 기본 설정을 재정의하도록 허용하려면 구성 파일을 엽니다.

메모: 이 경우 높은 sudo 권한이 필요합니다.

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

이 파일에서 다음 섹션을 찾아 AllowOverride 줄의 값을 변경합니다(None을 All로 대체). 결과적으로 섹션은 다음과 같이 표시됩니다.


옵션 색인 FollowSymLinks MultiViews
모두 무시 허용
주문 허용, 거부
모두에게 허용하다

변경 사항을 저장하고 파일을 닫은 후 Apache 서버를 다시 시작합니다. 이제 .htacess 파일을 모든 서버 사이트에서 사용할 수 있습니다.

sudo 서비스 apache2 다시 시작

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

3: URL 재작성

전체 URL 재작성 작업은 .htaccess 파일에서 수행됩니다. 일반적으로 모든 URL 재작성 명령은 동일한 패턴을 따릅니다.

RewriteRule 패턴 대체

이 명령에 사용된 옵션은 다음과 같습니다.

  • RewriteRule: 필요한 지시어를 설정할 수 있는 섹션입니다.
  • 패턴: 정규식을 사용하여 원하는 URL을 해석하는 섹션입니다. 이 튜토리얼에서는 정규식을 다루지 않습니다. 이 주제에 대한 유용한 정보는 Apache 웹사이트에서 찾을 수 있습니다.
  • 대체: 페이지의 실제 URL을 표시합니다. 이 링크는 PHP 매개변수 또는 긴 숫자 시퀀스로 구성되어 기억하기 어렵습니다(예: www.bestshop.com/gadgets.php?innovation=laptops).
  • 선택적 플래그: 플래그는 표현식의 동작을 변경할 수 있는 RewriteRule 지시어 끝에 있는 태그입니다. 일부 일반적인 플래그: [F]는 URL을 허용하지 않거나 대문자를 무시하거나 사용된 리디렉션 코드를 제어합니다. [L]은 이것이 시리즈의 마지막 규칙임을 나타냅니다.

URL 재작성 예

예 1: 페이지 A 열기 - 페이지 B로 이동합니다.

이는 URL 재작성의 가장 기본적인 예입니다. 사이트 방문자가 브라우저에 하나의 URL을 입력했지만 다른 URL로 리디렉션됩니다. 이 동작을 구성하려면 이 섹션의 지침을 따르십시오.

시작하려면 두 개의 웹사이트 페이지를 만드세요. 예를 들어, 첫 번째 항목은 사과(apples.html)에 관한 것이고 두 번째 항목은 오렌지(oranges.html)에 관한 것입니다.

이 코드를 복사하십시오:



사과


이 페이지는 사과에 관한 것입니다.



그런 다음 두 번째 페이지(이 경우 오렌지 전용 페이지)를 만듭니다. 이렇게 하려면 이 코드 블록의 Apple을 Orange로 바꾸면 됩니다.

그런 다음 .htaccess 파일을 엽니다.

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

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

RewriteEngine 켜짐
RewriteRule ^oranges.html$ apples.html

파일을 저장하고 닫습니다.

그런 다음 /oranges.html 페이지를 방문하면 /apples.html 페이지의 정보가 포함됩니다.

위의 명령을 자세히 살펴보겠습니다.

  • ^oranges.html: 원하는 페이지가 시작되는 방법을 지정합니다. 캐럿(^)은 줄의 시작을 나타냅니다. 즉, URL을 다시 작성해야 하는 페이지가 다르게 시작된 경우(예: oranges.html 대신 oranges_1.html) 다시 쓰기 규칙과 일치하지 않으며birds.html로 리디렉션되지 않습니다.
  • $: 달러 기호는 URL 끝에 위치합니다. 다시 말하지만, 문자열이 다르게 끝나는 경우(예: 선언된 마지막 문자 뒤에 문자가 포함된 경우) 웹 페이지는 다시 쓰기 규칙에 의해 인식되지 않습니다.
  • apples.html: 브라우저가 이 페이지로 트래픽을 전달합니다.

예 2: URL의 하위 디렉터리인 매개변수

URL을 확인하세요:

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

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

http://example.com/products/apple

이렇게 하려면 .htaccess에 다음 줄을 추가해야 합니다.

RewriteEngine 켜짐
RewriteRule ^products/(+)/?$ results.php?products=$1

이 줄은 다음 옵션으로 구성됩니다.

  • ^products: 이 경우 리디렉션하려면 URL이 products라는 단어로 시작해야 합니다(이는 도메인 뒤의 텍스트에만 적용됩니다). 다시 말하지만, URL이 다르게 시작하면 규칙이 적용되지 않습니다.
  • (+): 괄호 안에 있는 이 텍스트는 URL이 모든 문자로 구성될 수 있음을 나타냅니다. 더하기 기호는 괄호 안에 하나 이상의 문자가 포함될 수 있음을 나타냅니다.
  • /?$: 달러 기호는 줄의 끝을 표시합니다. 물음표를 사용하면 줄 끝에 슬래시를 넣을 수 있습니다(필수는 아니지만).
  • : 규칙이 모든 문자의 대소문자를 무시해야 함을 나타내는 문구 끝에 있는 플래그입니다.

예 3: 클린 링크 설정

이 기능은 사이트의 URL이 너무 길거나 복잡한 경우에 유용합니다.

예를 들어 다음 URL을 사용할 수 있습니다.

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

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

이렇게 하려면 .htaccess에 다음 줄을 추가해야 합니다(그런데 .htaccess에는 해당 섹션을 무제한으로 포함할 수 있습니다).

RewriteEngine 켜짐
RewriteRule ^(고기|생산|유제품)/([^/.]+)/([^/.]+)$ results.php?products=$1&type=$2&species=$3

이 코드를 더 자세히 살펴보겠습니다.

  • 사각형(^ 기호)은 표현식의 시작을 나타냅니다.
  • (meat|produce|dairy): 표시할 수 있는 옵션을 제한하려면 괄호 안에 허용되는 값만 지정합니다(이 경우 육류, 농산물, 유제품). URL에 괄호로 묶이지 않은 매개변수가 포함되어 있으면 다시 작성되지 않습니다.
  • ([^/.]+)는 캐럿 뒤의 문자(이 경우 슬래시와 마침표)를 제외한 모든 문자를 슬래시로 쓸 수 있음을 나타냅니다.
  • results.php?products=$1&type=$2&species=$3: 괄호 안의 각 값이 추출되어 대체 부분의 더 긴 URL에 삽입됩니다. $1은 첫 번째 괄호, $2 – 두 번째, $3 – 각각 세 번째 괄호를 나타냅니다.

기사의 계속을 찾을 수 있습니다.

태그: ,