2012-07-29 4 views
0

이것은 내가하려고하는 것입니다. 한 컴퓨터에서 해결되지 않는 URI는 역방향 프록시를 통해 다른 것으로 범프됩니다. 구성은 다음과 같다 : 그가 말하는하도록되어 지금의Apache mod_rewrite RewriteCond -U 플래그 거짓 긍정

RewriteEngine On 
RewriteCond %{REQUEST_URI} !-U 
RewriteRule ^/(.*)$ http://other.site/$1 [P,NS] 

, "나는하는 subrequest을 실행하여 로컬 아무것도 찾을 프록시로 펀트 할 수 없습니다."

문제는 없습니다. RewriteLogLevel을 입력하면 다음과 같이 나타납니다.

31.3.3.7 - - [29/Jul/2012:00:26:18 --0700] [internet.srs.bznz/sid#7fc6099fa228][rid#7fc609bf2bf0/initial] (5) RewriteCond URI (-U) check: path=/ -> status=200 
31.3.3.7 - - [29/Jul/2012:00:26:18 --0700] [internet.srs.bznz/sid#7fc6099fa228][rid#7fc609bf2bf0/initial] (4) RewriteCond: input='/' pattern='!-U' => not-matched 

해당 컴퓨터에 /에 아무것도 없습니다. 그것은 403을 반환해야합니다. 그래서 내 질문은 : 도대체 200 OK가 어디에서 오는 것입니까? 새로운 데비안 VPS이기 때문에 설정에 오염이있는 것은 아닙니다. 나는이 다른 곳에서 (Ubuntu 12.04) 같은 것을 시도했다.

무엇이 잘못된 코드인지 알아 보려면 어떻게해야합니까?

답변

4

같은 문제가 있습니다. 또한, 제 I의 시험 조건으로

RewriteCond %{IS_SUBREQ} =false

를 추가하여 구성 향상된. 그렇지 않으면 재귀가 될 것입니다.

내 경험에 따르면 기존 URI 또는 ​​존재하지 않는 URI는 OK (200)로 평가됩니다. 이유는 모르겠지만 그 URI에 대한 서버 구성 만 테스트 할 수 있습니다. 경로가 허용되는지 또는 거부되는지는 Deny from all 또는 RewriteRule [F]

+0

입니다. [apache docs] (http://httpd.apache.org/ docs/current/mod/mod_rewrite.html # rewritecond) : _TestString_이 유효한 URL인지 여부를 확인합니다.이 URL은 해당 경로에 대한 모든 서버의 현재 구성된 액세스 제어를 통해 액세스 할 수 있습니다. ** 따라서 구성 된 액세스 권한 만 확인하고 존재하지는 않습니다 또는 파일 시스템 권한 ... – motas

관련 문제