Как я могу сопоставить запросы для известных типов MIME, содержащих строки запроса, в nginx?
Я использую nginx для статического обслуживания ресурсов, а также перенаправления всех запросов, не связанных с активами, на фронт-контроллер PHP. у меня есть location
блок, который выглядит как:
location / {
include /etc/nginx/mime.types;
index index.php;
try_files $request_uri $request_uri/ /index.php?$query_string;
}
Из того, что я понимаю, это должно сначала попытаться сопоставить запрос с любыми известными типами MIME, и если файл не найден, он должен попробовать запрос против моего PHP location
блок (не показан).
Это прекрасно работает, если я хочу посетить http://example.com/css/owls.css
, но если я попытаюсь посетить http://example.com/css/owls.css?t=_423632636
, он не распознает "расширение" и поэтому пытается передать запрос в мою точку входа PHP (что, конечно, не удается).
Как я могу сказать nginx, что запрос на http://example.com/css/owls.css?t=_423632636
(или любая другая строка запроса, которая следует за допустимым типом MIME) должна сначала попытаться соответствовать статическому файлу css/owls.css
?
Если файл (без строки запроса) не существует, то он должен вернуться к PHP try_files
команда.
1 ответ
Nginx делает это автоматически для меня с помощью строки try_files ниже. Обратите внимание, что вы используете $request_uri вместо $uri. Попробуйте изменить это. первый.
try_files $uri $uri/ /index.php?$args;
Если это не решит вашу проблему, отредактируйте ваш вопрос, включив в него весь файл nginx.conf и соответствующий блок сервера.