文档
一个 项目

try_files

将请求 URI 路径重写为站点根目录中存在的第一个列出文件。如果没有任何文件匹配,则不会执行重写。

语法

try_files <files...> {
	policy first_exist|smallest_size|largest_size|most_recently_modified
}
  • <files...> 是要尝试的文件列表。URI 路径将被重写为第一个存在的路径。

    要匹配目录,请在路径末尾添加一个斜杠 /。所有文件路径都是相对于站点 根目录 的,并且 通配符模式 将被扩展。

    每个参数也可以包含一个查询字符串,在这种情况下,如果查询字符串与特定文件匹配,则查询字符串也会更改。

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