2013-05-16 42 views
0

我想翻譯一些htaccess的文件的Nginx虛擬主機配置,我有這個麻煩的Nginx的存在:檢查文件是否使用正則表達式

RewriteCond %{DOCUMENT_ROOT}/img/id_$1_$2 -f 
RewriteRule ^id/(.+)/(.+)$ img/id_$1_$2 [NC,L] 

正如你所看到的,這種情況檢查一個文件使用一些正則表達式來根據輸入的URL動態生成文件名。

下nginx的指令做正確的重寫,但沒有檢查該文件bofore:

rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break; 

我只想做這個重寫,如果該文件確實存在,如果不重寫另一個會發生。

所有想法都可能有所幫助。非常感謝。

回答

0
try_files $uri $uri/ @what_to_do; 

從那裏,如下定義一個新的位置:

location @what_to_do { 
    rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break; 
} 

try_files指令將嘗試找到在$ URI文件,然後在$ URI /,其中$ URI是在指定的路徑網址。如果失敗,它將轉到重寫所在的@what_to_do位置塊。

Bonus point:這也允許你整齊地將你的重寫規則與其餘的服務器配置分開!

+0

現在工作了!謝謝! 我試圖把它與我擁有的另一個條件放在一起,當我全部工作時,我會再次編輯這個謝謝。 – user1429605

相關問題