2014-06-17 3 views
0

질문을 끝내고 제가 찾고있는 것을 정확히 찾을 수 없었습니다.Apache RewriteCond 규칙 ... 이전 사람을 이해하려고 시도합니다.

논리적으로 특정 IP에 특정 페이지에 대한 액세스 만 허용하는 것입니다. 다른 모든 IP를은 일반 (404) 규칙에 전달한다처럼

규칙이 보인다 (보다는 어떤 사람들은 얻을 싶 보안 오류 수) :

RewriteCond %{REQUEST_URI} ^/Folder/Site/index.hml 
RewriteCond %{REMOTE_HOST} !^IP1 
RewriteCond %{REMOTE_HOST} !^IP2 
RewriteCond %{REMOTE_HOST} !^IP3 
RewriteRule $ /Generic404.html [PT,L] 

그래서 이전 기술의 사용을 그리고 나는 아파치가 IIS 세계에서 온다는 사실에 매우 익숙하다. 그리고 나는 매우 사용자 정의가 가능하다. 그리고 나는 천천히 배우면서 나의 주니어 역할을 충만히하고있다. (IP1, IP2, IP3은 페이지에 액세스 할 수 있도록 IP3, IP2, IP3은 다시 쓸 수 없지만 위의 제한된 이해로 인해 위에서 언급 한 IP1, IP2, IP3은 모두 Generic404.hml 페이지로 전달됩니다)

하지만 위의 내용을 사용할 수 있는지 궁금합니다. 뭔가 같은 :

RewriteCond %{REQUEST_URI} ^/URL 
RewriteCond %{REMOTE_HOST} !^IP-1 [OR] 
RewriteCond %{REMOTE_HOST} !^IP-2 [OR] 
RewriteCond %{REMOTE_HOST} !^IP-3 
RewriteRule $ /Generic404.html [PT,L] 

내가 [OR]를 사용 할 수없는 이유에 대한 그의 설명은 모두 나에게 아무 의미하지 때문 나는 누군가가 실제로 방법으로 그것을 설명 할 수 바라고 있어요 ... 궁금 그건 나에게 의미가있다.

답변

0

다시 쓰기 조건의 기본 연산자는 논리적 AND입니다. 논리 OR로 바꾸면 다른 결과를 얻습니다.

첫 번째 규칙은 404가 표시되기 전에 모든 다시 쓰기 조건을 채워야하기 때문에 IP1-IP3에서 오지 않았을 때 404를 표시합니다.

IP1이 IP2 및 IP3과 동일한 값이 아닌 경우 두 번째 규칙은 항상 404를 표시합니다. true를 반환하는 단일 조건이 전체 규칙을 적용하기에 충분하기 때문입니다. 그리고 IP1에서 IP3까지 서로 다른 값을 가진다면 조건 체크 중 적어도 두 가지가 사실을 리턴합니다.