mod-rewrite
다시 쓰기 규칙의 컨텍스트
수색…
비고
이 항목에서는 RewriteRule 사용할 수있는 두 가지 상황에 대해 설명합니다. RewriteEngine on 예제에서는이 예 RewriteEngine on 지시문이 있다고 가정합니다.
디렉토리 별 컨텍스트에서 규칙 다시 쓰기
디렉토리 별 컨텍스트는 <Directory> 와 </Directory> 태그 사이의 정적 구성 파일의 일부입니다. 동적 구성 파일의 전체 내용은 .htaccess가 상주하는 폴더의 디렉토리 별 컨텍스트 내에 있습니다.
RewriteRule 디렉토리 별 컨텍스트에서 URL이있는 부분의 프로토콜, 호스트 이름, 포트 및 접두어가있는 디렉토리의 이전 부분과 쿼리 문자열 앞에 일치합니다.
정적 구성 파일
다음 규칙을 URL http://example.com/foo?id=1 에 사용하면 RewriteRule 의 첫 번째 인수에서 정규 표현식이 foo 와 일치합니다. 프로토콜 ( http ), 호스트 이름 ( example.com ) 및이 디렉토리의 접두사 ( / )가 제거됩니다. 다른 끝에서 쿼리 문자열 ( ?id=1 )도 제거됩니다.
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
다음 예제에서 url http://example.com/topic/15-my-topic-name 사용하면 RewriteRule 의 첫 번째 인수가 topic/15-my-topic-name 과 일치합니다.
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
동적 구성 파일
다음 규칙을 www-root 폴더에있는 .htaccess 파일에 넣은 다음 URL http://example.com/foo?id=1 에서 사용하면 첫 번째 정규 표현식이 foo 와 일치합니다.
RewriteRule ^foo$ bar [L]
디렉토리 별 컨텍스트에서 일치하는 URL은
/시작 하지 않습니다 . 그런 맥락에서,RewriteRule ^/시작하는 지시어는 절대 일치하지 않습니다.
가상 호스트 컨텍스트에서 다시 쓰기 규칙
가상 호스트 컨텍스트 사이의 정적 구성 파일의 일부이다 <VirtualHost> 및 </VirtualHost> 태그.
가상 호스트 컨텍스트의 RewriteRule 은 프로토콜, 호스트 이름 및 포트 다음과 쿼리 문자열 앞에있는 url 부분과 일치합니다.
다음 규칙을 URL http://example.com/foo?id=1 에 사용하면 RewriteRule 의 첫 번째 인수에서 정규 표현식이 /foo 와 일치합니다.
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>