2010-02-01 3 views
5

주어진 파일에 대해 여러 폴더 위치를 검사하기위한 mod_Rewrite 규칙은 무엇입니까? 나는의 폴더 구조가있는 경우 예를 들어, :mod_Rewrite를 사용하여 여러 폴더에서 정적 파일을 검사하는 방법

public/ 
    css/ 
    library1/ 
     css/ 
    library2/ 
     css/ 

을 내가 먼저 public/css/ 디렉토리를 확인 /css/somefile.css에 요청을하려면, 다음 자산의에서 찾을 수없는 경우 404를 반환하고 public/library1/css/public/library2/css/에 계단식으로 디렉토리들.

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond library1%{REQUEST_URI} -f 
RewriteRule ^(.*)$ library1$1 [L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond library2%{REQUEST_URI} -f 
RewriteRule ^(.*)$ library2$1 [L] 

을하지만이 작동하지 않는 것 - 나는 동적으로 생성 된 경로에 파일 존재를 확인하는 방법을 잘 모르겠어요 :

것은 나는의 라인을 따라 생각했다.

답변

6

이 규칙을 시도해보십시오

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/library1%{REQUEST_URI} -f 
RewriteRule ^css/.+ library1%{REQUEST_URI} [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/library2%{REQUEST_URI} -f 
RewriteRule ^css/.+ library2%{REQUEST_URI} [L] 
+0

건배 - 나는 %를 발견하지 않았다 문서를 읽을 때 {DOCUMENT_ROOT} 개의 변수가 있습니다. – DavidWinterbottom

+0

@DavidWinterbottom : 기존 파일, 디렉토리 등을 테스트하려면 절대 파일 시스템 경로가 필요합니다. * REQUEST \ _FILENAME *에는 절대 파일 시스템 경로는 이미 있지만 * REQUEST \ _URI *는 절대 URL 경로 만 포함하고 있습니다. – Gumbo

+0

@Gumbo : 6 행을 참조하면 안됩니다.'library2'? –

1

아마도 서버 변수에 사용자의 생각이 포함되어 있지 않을 수 있습니다. 디버깅 할 로깅을 늘려보십시오. 그러면 무슨 일이 일어나는지 정확하게 볼 수 있습니다.

0

을이 시도 :

something.dev/ library1 /style.css -> production.com/ :

# Loads files from production server 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (library1|library2)/(.*)$ http://production.com/$1/$2 [R=302,L,NC] 

이를 달성하기 위해 라이브러리 1/style.css something.dev/ library2/공급 업체/CSS /있는 style.css -> production.com/ 그에 대한 library2/공급 업체/CSS /있는 style.css

관련 문제