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 索引/路由器入口点
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
}