Apache의 RewriteCond 규칙 매개변수에 대한 자세한 설명

1774 단어 ApacheRewriteCond
RewriteCond는 우리 프로그램의 if문장과 같이 특정한 조건이나 몇 가지 조건에 부합되면 RewriteCond 아래에 인접한 RewriteRule 문장을 실행한다는 것을 나타낸다. 이것이 바로 RewriteCond의 가장 원시적이고 기초적인 기능이다. 이해하기 쉽도록 몇 가지 예를 살펴보자

RewriteEngine on
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla//5/.0.*
RewriteRule  index.php            index.m.php
RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  index.php            index.L.php
RewriteRule  index.php            index.b.php
위 문장의 역할은 FF 브라우저로 index에 접근하는 것입니다.php 이 파일은 인덱스에 자동으로 접근할 수 있습니다.m.php 이 파일은 이동 단말기로 접근할 때 index에 접근할 수 있습니다.php 이 파일의 접근은 인덱스입니다.L.php에 가서 다른 브라우저로 접근할 때 index로 건너뛰게 합니다.b.php.이미지를 말하자면 위의 문장은 프로그램 안의 아래 문장과 같다(PHP 문장을 예로 들면)

if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
// index.m.php
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
// index.L.php
}
else
// index.b.php
보기2: RewriteCond%{HTTP_REFERER}(www.test.cn)RewriteRule(.*)$test.php 위 문장의 역할은 이전 페이지의 호스트 주소가 www.test라면cn, 현재 방문한 페이지가 어느 페이지든지 테스트로 이동합니다.php의 접근.예3:

RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php
위의 문장의 역할은 주소가host1 또는host2 또는host3일 때test로 이동하는 것입니다.php.여기서 알 수 있듯이 RewriteCond 문장 사이의 기본값은 AND이고 OR를 원한다면 명확하게 써야 한다.다음은 자신이 소장하고 있는 유용한 재작성 규칙들입니다: RewriteCond% {REQUEST_FILENAME}! -f//파일이 있으면 다음 RewriteRule 없이 파일에 직접 액세스합니다.(파일이나 파일이 존재하지 않으면 다시 쓰기) RewriteCond% {REQUEST_FILENAME}! -d//# 디렉토리가 있으면 디렉토리에 직접 액세스하여 RewriteRuleRewriteCond%{REQUEST_URI}!^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg) $//# 이 접두사 파일이라면 Rewrite 없이 파일에 직접 접근합니다.

좋은 웹페이지 즐겨찾기