2010-02-01 31 views
5

用於檢查給定文件的多個文件夾位置的mod_Rewrite規則是什麼?舉例來說,如果我有一個文件夾結構:如何使用mod_Rewrite爲靜態文件檢查多個文件夾

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

,我想請求/css/somefile.css首先檢查public/css/目錄,然後級聯到public/library1/css/然後public/library2/css/,返回404,如果資產不能在任何的發現目錄。

我的線沿線的思考:

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 2010-02-01 14:36:30

+0

@DavidWinterbottom:當您要測試現有文件,目錄等時,您需要絕對文件系統路徑。* REQUEST \ _FILENAME *已包含絕對文件系統路徑,但* REQUEST \ _URI *僅包含絕對URL路徑。 – Gumbo 2010-02-01 14:39:39

+0

@Gumbo:不應該第6行引用'library2'? – 2012-01-21 17:41:07

1

服務器變量可能不包含您的想法。嘗試增加日誌記錄以進行調試,以便您可以看到究竟發生了什麼。

0

試試這個:

# 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] 

要做到這一點:

something.dev/ LIBRARY1 /style.css - > production.com/ library1/style.css something.dev/ library2/供應商/ CSS/style.css中 - > production.com/ library2/供應商/ CSS/style.css中

相關問題