2017-04-15 2 views
1

내가 리디렉션 대신 Redirect requests only if the file is not found?에 해당하는 것을 찾고 있는데, 파일이 누락 된 경우 다른 서버에 ProxyPass를 수행하려고합니다.파일을 찾을 수없는 경우에만 프록시 요청을 하시겠습니까?

"/"로 끝나지 않는 요청을 처리하지 않기 때문에 너무 잘 작동하지 않았습니다. https://site.trajano.net/trajano 프록시로 이동하여 대신 다시 나타납니다.

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule (.*) - [L] 
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P] 

다른 답변에서도 다음과 같이 시도해 보았지만 약간 효과적 이었지만 프록시가 아닌 github로 리디렉션됩니다.

RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/$1 -d 
RewriteRule (.*) - [S=2] 
# 
# Requested resource does not exist, do rewrite if it exists in /archive 
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -d 
RewriteRule (.*) /archive/$1 [L] 
# 
# Else 
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P] 

답변

0
모두 mod_rewrite

mod_proxyVirtualHost 블록이 아닌 Directory 블록에 다음 활성화 될 필요가있다.

첫 번째 재 작성 블록은 원본 파일 블록을 반환하는 파일과 디렉토리를 처리합니다.

다음 다시 쓰기 규칙이 프록시를 처리합니다. ProxyPassReverse은 반환되는 Location이 프록시 서버가 아닌 로컬 서버로 다시 작성되도록합니다.

프록시 재 작성 규칙에 /이 없으므로 %{REQUEST_URI}에는 앞부분에 /이 포함되어 있습니다.