2012-07-11 115 views
1

現場,favicon.ico保存在/images/目錄中,而不是根目錄。我該如何告訴nginx去那裏看?與nginx,你如何重寫請求到不同的目錄?

嘗試 - 這看起來正確,但不工作:

location = /favicon.ico$ { rewrite /(.*) /images/$1 last; } 

回報404 Not Found

文件有:請求http://www.example.com/images/favicon.ico成功

回答

6
+0

作品!涼!有沒有辦法做到這一點使用路​​徑相對做_document_根?順便說一句,偉大的鏈接 – 2012-07-11 12:56:11

+0

你可以使用相對於服務器根目錄的路徑,它是在編譯時通過「prefix =」參數或「p =」命令行參數或%% PREFIX %% env變量設置的。 http://nginx.org/en/docs/install.html – VBart 2012-07-11 13:54:15

+0

但我建議留在絕對路徑。顯式配置比任何隱含的東西都要好。 – VBart 2012-07-11 13:58:40

1

我們也可以重寫解決這個問題。 (我不得不使用重寫來解決這個問題,因爲我使用的是try_files指令。)

這裏是我的配置:

# Long cache times for static content 
location ~ /_/static/(.+)$ { 
    # hold the last five versions of our static content 
    try_files 
     /_/static_477526f-master/$1 
     /_/static_05c8613-release/$1 
     /_/static_05c8613-master/$1 
     /_/static_db26497-release/$1 
     /_/static_db26497-master/$1; 
    expires 365d; 
    add_header Cache-Control public; 
    add_header Access-Control-Allow-Origin *; 
} 

location = /favicon.ico { 
    rewrite . /_/static/favicon.ico; 
    expires 14d; 
    add_header Cache-Control public; 
} 

.正則表達式匹配任何東西,而且第二條目重寫URL。由於這是一個favicon特定的位置,我們可以對其進行硬編碼,而不是使用正則表達式捕獲和$1