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>