Я использую 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
команда.
Nginx делает это автоматически со строкой try_files ниже. Обратите внимание, что вы используете $ request_uri вместо $ uri. Попробуйте это изменить. первый.
try_files $uri $uri/ /index.php?$args;
Если это не решит вашу проблему, отредактируйте свой вопрос, включив в него весь файл nginx.conf и соответствующий блок сервера.