try_files
サイトルートに存在する一覧化されたファイルの先頭部分にリクエスト URI パスを書き換えます。一致するファイルがない場合、書き換えは実行されません。
構文
try_files <files...> {
policy first_exist|smallest_size|largest_size|most_recently_modified
}
-
<files...> は試行するファイルのリストです。URI パスは存在する最初のファイルに書き換えられます。
ディレクトリと一致させるには、パスの末尾にスラッシュ
/
を追加します。すべてのファイルパスはサイト ルート に対して相対的であり、グローブパターン が展開されます。各引数にはクエリ文字列を含めることもできます。その場合、クエリ文字列はその特定のファイルと一致する場合も変更されます。
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
}