try_files
Перезаписывает путь запроса URI к первому из перечисленных файлов, который существует в корне сайта. Если файлы не совпадают, переписывание не выполняется.
Синтаксис
try_files <files...> {
policy first_exist|first_exist_fallback|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.be331df.html, когда запрашивается index.html):
try_files {file.base}.*.{file.ext} {
policy most_recently_modified
}
© 2015-2025 Matthew Holt and The Caddy Authors
Licensed under the Apache License 2.0.
Caddy is a registered trademark of Stack Holdings GmbH.
https://caddyserver.com/docs/caddyfile/directives/try_files