文件
一個 專案

try_files

將請求 URI 路徑重寫為站點根目錄下存在的第一個列出的檔案。如果沒有檔案符合,則不執行重寫。

語法

try_files <files...> {
	policy first_exist|first_exist_fallback|smallest_size|largest_size|most_recently_modified
}
  • <files...> 是要嘗試的檔案列表。URI 路徑將被重寫為第一個存在的檔案。

    若要比對目錄,請在路徑後附加斜線 /。所有檔案路徑都相對於站點根目錄,並且 glob 模式 將會展開。

    每個引數也可能包含查詢字串,在這種情況下,如果它符合該特定檔案,查詢字串也會被更改。

    如果 try_policyfirst_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
}