try_files
將請求 URI 路徑重寫為站點根目錄下存在的第一個列出的檔案。如果沒有檔案符合,則不執行重寫。
語法
try_files <files...> {
policy first_exist|first_exist_fallback|smallest_size|largest_size|most_recently_modified
}
-
<files...> 是要嘗試的檔案列表。URI 路徑將被重寫為第一個存在的檔案。
若要比對目錄,請在路徑後附加斜線
/
。所有檔案路徑都相對於站點根目錄,並且 glob 模式 將會展開。每個引數也可能包含查詢字串,在這種情況下,如果它符合該特定檔案,查詢字串也會被更改。
如果
try_policy
是first_exist
(預設值),則列表中的最後一個項目可以是數字,並以=
為前綴(例如=404
),作為後備方案,這將發出具有該代碼的錯誤;該錯誤可以被handle_errors
捕獲並處理。 -
policy 是用於在檔案列表中選擇檔案的策略。
預設值:
first_exist
展開形式
try_files
指令基本上是以下內容的快捷方式
@try_files file <files...>
rewrite @try_files {file_match.relative}
請注意,此指令不接受比對器令牌。如果您需要更複雜的比對邏輯,請以上述展開形式作為基礎。
請參閱 file
比對器 以了解更多詳細資訊。
範例
如果請求不符合任何靜態檔案,則重寫到您的 PHP index/路由器入口點
try_files {path} /index.php
相同,但將原始路徑添加到查詢字串(某些舊版 PHP 應用程式需要)
try_files {path} /index.php?{query}&p={path}
相同,但也比對目錄
try_files {path} {path}/ /index.php?{query}&p={path}
嘗試重寫到檔案或目錄(如果存在),否則發出 404 錯誤(可以使用 handle_errors
捕獲並處理)
try_files {path} {path}/ =404
選擇最近部署版本的靜態檔案(例如,當請求 index.html
時,提供 index.be331df.html
)
try_files {file.base}.*.{file.ext} {
policy most_recently_modified
}