Mod_rewrite 소개 및 치트 시트 – 빠른 참조

폭로: 귀하의 지원은 사이트 운영을 유지하는 데 도움이됩니다! 이 페이지에서 권장하는 일부 서비스에 대한 추천 수수료가 발생합니다.


mod_rewrite는 웹 호스트 컴퓨터에서 실행되는 Apache 웹 서버 소프트웨어의 일부입니다. URL을 동적으로 변경하거나 “재 작성”할 수 있습니다.

“pretty”퍼머 링크가 켜진 상태에서 WordPress를 사용하면 mod_rewrite가 작동하는 것을 볼 수 있습니다. 기본적으로 모든 WordPress 페이지는 ID 번호가 포함 된 URL과 WordPress에로드 대상을 알려주는 다른 변수를 사용하여로드됩니다. 그러나 예쁜 퍼머 링크가 활성화되면 mod_rewrite 규칙은 이러한 추악한 변수를 단어로 변경합니다. 때때로 결과 URL을 “정리”라고합니다.

mod_rewrite를 사용하여 재 작성하는 것은 본질적으로 URL을 더티에서 더 깨끗한 URL로 즉시 변환하는 프로세스입니다. Apache의 처리가 방문자의 브라우저로 전송되기 전에 처리되기 때문에 방문자는 주소 표시 줄에서 URL 변경을 볼 수 없습니다..

mod_rewrite를 사용하거나 URL을 정리하지 않고도 웹 사이트를 운영 할 수 있습니다. 그러나 대부분의 사람들이 사용하는 이유는 다음과 같습니다.

  • 사람이 URL을 더 쉽게 읽을 수 있도록합니다. “예쁜”URL은 기억하기 쉽고 입력하기 쉬우 며 읽기가 쉽습니다..
  • 검색 엔진이 URL을보다 쉽게 ​​해석 할 수 있도록합니다. 예쁜 URL은 검색 엔진에 페이지의 내용을 알려주지 만 ID 번호와 변수는 뒤섞이지 않습니다. 검색 엔진은 시맨틱을 좋아하므로 URL을 다시 쓰면 페이지가 올바르게 분류되고 색인이 생성됩니다..
  • 한 파일 또는 경로에서 다른 파일 또는 경로로의 리디렉션을 임시로 만들려면.

Mod_rewrite 규칙 작성

Apache를 사용하는 경우 웹 호스트에게 계정의 http.conf 파일에서 mod_rewrite를 활성화하도록 요청해야합니다. 많은 경우, mod_rewrite는 기본적으로 활성화되어 있습니다.

다음으로 호스팅 계정의 루트 디렉토리에 .htaccess 파일을 작성해야합니다. .htaccess 파일은 폴더 트리 아래의 다른 .htaccess 파일로 대체하지 않는 한 루트 디렉토리와 그 아래의 모든 파일을 제어합니다. .htaccess 파일이 이미있는 경우 계속하기 전에 백업 사본을 만드십시오..

다시 쓰기 규칙에는 두 부분이 있습니다. 첫 번째 줄은 Apache에서 다시 쓰기 엔진 지시문을 활성화합니다. #으로 시작하는 행은 주석이며 무시됩니다. mod_rewrite 문의 두 번째 부분은 URL을 어떻게 변환해야하는지 다시 쓰기 엔진에 알려줍니다. 그래서 우리는 조건을 말한 다음 아파치에게 무엇을해야하는지 알려줍니다. 방문자를 한 파일에서 다른 파일로 리디렉션하는 규칙의 예는 다음과 같습니다..

# 다시 쓰기 켜기
다시 쓰기 엔진
# oldname.html을 newname.html로 변환
RewriteRule ^ oldname.html $ newname.html

이 규칙은 oldname.html (조건)이라는 파일을 확인합니다. 일치하는 것을 찾으면 동적으로 newname.html로 대체합니다. 최종 사용자는 oldname.html의 내용을 볼 수 있지만 브라우저 URL 표시 줄에 newname.html을 볼 수 있습니다. mod_rewrite가 oldname.html과 일치하지 않으면 규칙이 무시됩니다..

패턴 찾기

모든 URL에 대해 하나의 규칙을 만드는 데 시간이 오래 걸리므로 정규식을 사용해야합니다. 정규식은 패턴을 찾고 문자열의 한 청크를 다른 청크로 바꿉니다. 이 예제를 보자 :

# 다시 쓰기 켜기
다시 쓰기 엔진
# author / NAME /을 author.php? id = NAME으로 바꾸십시오.
RewriteRule ^ author / ([a-z] +) /? $ author.php? id = $ 1 [L]

세분화하면 ^ author / ([a-z] +) /? $ 조건이 작동하는 방식은 다음과 같습니다.

  • ^는 규칙의 시작이다
  • author /는 원래 URL에서 찾고있는 문자열입니다.
  • ([a-z] +)는 와일드 카드입니다. 작성자 / 다음에 나오는 단어를 찾습니다.
  • /? URL 끝에 슬래시를 추가합니다
  • $는 조건의 끝을 표시합니다.

다음은 author.php? id = $ 1 액션의 작동 방식입니다.

  • author.php? id =는 우리가 쓰고 싶은 문자열입니다
  • $ 1은 위 조건에서 찾은 단어의 자리 표시 자입니다..

규칙 끝에서 [L]은이 규칙이 처리되면 Apache에서 더 이상 규칙 적용을 중지하도록 지시하는 플래그입니다..

이것은 mod_rewrite가 할 수있는 가장 기본적인 예일뿐입니다. [a-z]를 쓰는 대신 [xyz]를 사용하여 문자 x, y 또는 z를 찾거나 (y | n)을 사용하여 y 또는 n을 찾을 수 있습니다. 아래 리소스에서 정규 표현식 구문에 대한 더 완전한 참조를 찾을 수 있습니다..

RewriteRule 플래그

위의 예에서 규칙 끝에 플래그 [L]을 추가했습니다. 플래그는 선택 사항입니다. 행 끝에 단일 대괄호 집합에 포함되어야하며 여러 플래그를 사용하려면 그 사이에 쉼표를 넣어야합니다..

플래그는 전체 또는 단축 버전으로 작성 될 수 있습니다. 짧은 플래그 영역은 입력하기가 쉽지만 코드를 쉽게 읽을 수있게하려면 긴 플래그를 사용하는 것이 좋습니다..

  • B : 영숫자가 아닌 문자를 이스케이프합니다. AllowEncodedSlashes를 On으로 설정해야 할 수 있습니다..
  • C 또는 체인 : .htaccess 파일의 다음 규칙에 규칙을 연결합니다. 두 번째는 첫 번째 결과가 일치하는 경우에만 실행됩니다.
  • CO 또는 쿠키 : 규칙이 일치하면 쿠키를 만듭니다. 추가 속성이 필요합니다.
  • DPI 또는 폐기 경로 : 다시 작성된 URL에서 PATH_INFO를 폐기합니다..
  • E 또는 env : 환경 변수를 설정합니다.
  • END : L과 유사하며 더 이상 재기록 처리를 중지합니다..
  • F 또는 금지 : 규칙에 대한 응답과 함께 403 금지 상태를 반환합니다..
  • G 또는 사라짐 : 규칙에 대한 응답으로 410 Gone 상태를 반환합니다..
  • H 또는 핸들러 : 규칙이 변수로 지정된 특정 핸들러를 사용하도록합니다..
  • L 또는 마지막 : 규칙 처리를 중지합니다.
  • N 또는 다음 : 규칙 결과를 입력으로 사용하여 현재 규칙 세트를 다시 시작합니다..
  • NC 또는 nocase : 규칙의 대소 문자 구분을 끕니다..
  • NE 또는 noescape : 특수 문자를 동등한 16 진 코드로 변환.
  • NS 또는 nosubreq : 다시 쓰기가 하위 요청에 적용되지 않도록 중지.
  • P 또는 프록시 : 규칙 결과를 mod_proxy로 푸시하고 나머지 규칙은 무시합니다..
  • PT 또는 패스 스루 : 파일 경로를 URL로 변환.
  • QSA 또는 qsappend : 쿼리 문자열을 새 문자열과 결합.
  • QSD 또는 qsdiscard : 기존 쿼리 문자열을 버리고 대체합니다..
  • QSL 또는 qslast : 문자열의 마지막 물음표에서 쿼리 문자열을 분할합니다.
  • R 또는 리디렉션 : HTTP 리디렉션을 발행.
  • S 또는 건너 뛰기 : 여러 규칙을 건너 뜁니다. [S = n]으로 정의해야합니다. 여기서 n은 건너 뛸 규칙 수입니다..
  • T 또는 유형 : 규칙 응답의 MIME 유형을 설정합니다..

웹 호스팅 쿠폰

mod_rewrite 호스팅에 대한 많은 것을 찾고 있습니다?
A2 Hosting은 최근 속도 테스트에서 1 위를 기록했습니다. 현재 개발자 친화적 인 계획에서 최대 50 %를 절약 할 수 있습니다. 이 할인 링크를 사용하십시오
거래를 얻기 위해.

서버 변수

아래 목록에는 많은 서버 변수가 있으며 그중 일부는 mod_rewrite와 함께 사용할 수 있습니다. 모든 변수가 모든 서버에서 지원되는 것은 아니며 여기에 나열되지 않은 서버 변수를 사용할 수도 있습니다..

HTTP 헤더에 대해 이미 알고 있다면이 목록의 많은 서버 변수가 익숙 할 것입니다. 그러나 mod_rewrite와 함께 사용하기 위해 특별히 제공되는 몇 가지 변수가 있습니다.

  • API_VERSION : API 버전의 날짜.
  • AUTH_TYPE : 인증 유형; NONE, BASIC, DIGEST 또는 FORM을 리턴합니다..
  • CONN_REMOTE_ADDR : 피어 IP 주소.
  • CONTEXT_DOCUMENT_ROOT : Apache의 디렉토리 맵핑에 대한 정보.
  • CONTEXT_PREFIX : Apache의 디렉토리 맵핑에 대한 정보.
  • DOCUMENT_ROOT : 문서의 절대 경로.
  • 핸들러 : 핸들러 이름.
  • HTTP_ACCEPT : HTTP 요청 헤더에있는 경우 HTTP 수락 헤더.
  • HTTP_COOKIE : HTTP 요청 헤더에 쿠키가있는 경우.
  • HTTP_FORWARDED : HTTP 요청 헤더에있는 경우 실제 경로.
  • HTTP_HOST : 현재 서버 (HTTP 요청 헤더에있는 경우).
  • HTTP_PROXY_CONNECTION : HTTP 요청 헤더에있는 경우 HTTP 프록시 경로.
  • HTTP_REFERER : 참조 페이지 URL.
  • HTTP_USER_AGENT : 페이지에 액세스하는 데 사용 된 사용자 에이전트.
  • HTTP2 : 연결이 HTTP2를 사용하는지 여부; ON 또는 OFF를 반환.
  • HTTPS : 연결이 HTTPS를 사용하는지 여부; ON 또는 OFF를 반환.
  • IPV6 : 연결이 IPVS를 사용하는지 여부 ON 또는 OFF를 반환.
  • IS_SUBREQ : 요청이 하위 요청인지 여부 참 또는 거짓.
  • PATH_INFO : 파일 이름 뒤에 오는 경로 데이터.
  • QUERY_STRING : 물음표 뒤의 URL 문자.
  • REMOTE_ADDR : 사용자의 IP.
  • REMOTE_HOST : 사용자의 정규화 된 도메인 이름.
  • REMOTE_USER : 인증 된 사용자의 사용자 이름.
  • REMOTE_IDENT : identd가 반환 한 인증 된 사용자의 사용자 이름.
  • REQUEST_FILENAME : 요청에서 파일 또는 스크립트의 로컬 경로.
  • REQUEST_METHOD : 요청 메소드; HEAD, PUT, GET 또는 POST.
  • REQUEST_SCHEME : 요청 URI의 체계.
  • REQUEST_URI : 요청 URI (경로).
  • SCRIPT_FILENAME : 스크립트의 절대 경로.
  • SCRIPT_GROUP : 스크립트 그룹 이름.
  • SCRIPT_USER : 스크립트를 소유 한 사용자.
  • SERVER_ADDR : .htaccess 파일이 저장된 서버 IP.
  • SERVER_ADMIN : Apache에 구성된 서버 관리자.
  • SERVER_NAME : Apache에서 구성된 서버 이름.
  • SERVER_PORT : 요청이 전송 된 포트 번호.
  • SERVER_PROTOCOL : 요청의 프로토콜 및 수정.
  • SERVER_SIGNATURE : 서버 버전 및 호스트 이름.
  • SERVER_SOFTWARE : 서버의 ID 문자열.
  • THE_REQUEST : 요청 전체.
  • TIME : YYYYMMDDHHMMSS 형식의 날짜 및 시간.
  • TIME_DAY : 현재 요일.
  • TIME_HOUR : 현재 시간.
  • TIME_MIN : 현재 분.
  • TIME_MON : 이번 달.
  • TIME_SEC : 현재 초.
  • TIME_WDAY : 현재 날짜로, 숫자로 반환됩니다 (일요일은 0부터 시작).
  • TIME_YEAR : 현재 연도.

자원

  • Mod_rewrite 초보자 가이드:이 안내서는 2004 년부터 작성된 것이지만 mod_rewrite의 원칙을 잘 설명합니다..
  • 초보자를위한 URL 재 작성: 초보자 및 중급 사용자를위한 종합 안내서.
  • 아파치 재 작성 치트 시트: iLoveJackDaniels.com에 원래 게시 된 치트 시트의 HTML 버전.
  • 고급 정규식 소개:이 안내서를 사용하여 정규 표현식에 대한 지식을 개발하십시오..
  • 정규식 팔: 정규식 구문을 사이트에 배포하기 전에 확인하십시오..

요약

mod_rewrite는 아파치 동작을 제어하는 ​​유용하고 강력한 방법입니다. 여기서 다루지 않은 mod_rewrite를 사용하여 많은 작업을 수행 할 수 있습니다. 여기에는 리디렉션, 이미지 핫 링크 방지, 특정 사이트 방문자 차단 등이 포함됩니다. mod_rewrite를 활용하는 가장 좋은 방법은 정규 표현식을 배우는 것입니다.

추가 자료 및 자료

웹 개발과 관련된 더 많은 안내서, 자습서 및 인포 그래픽이 있습니다.

  • PHP 소개 및 리소스 : 웹에서 가장 많이 사용되는 백엔드 언어에 대한 모든 정보.
  • 인터넷 소켓을 사용한 네트워크 프로그래밍 : 인터넷 네트워킹에 관한 모든 것을 배우십시오.
  • MySQL 소개 및 리소스 : MySQL은 인터넷에서 가장 인기있는 데이터베이스 중 하나입니다.

올바른 CMS를 선택하는 방법

어떤 CMS를 사용하고 싶으십니까? 기사, 올바른 CMS를 선택하는 방법을 확인하십시오..

웹 마스터 도구 A-Z의 궁극적 인 목록
올바른 CMS를 선택하는 방법

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map