Назад | Перейти на главную страницу

Как я могу сопоставить запросы известных типов 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 команда.

Nginx делает это автоматически со строкой try_files ниже. Обратите внимание, что вы используете $ request_uri вместо $ uri. Попробуйте это изменить. первый.

try_files $uri $uri/ /index.php?$args;

Если это не решит вашу проблему, отредактируйте свой вопрос, включив в него весь файл nginx.conf и соответствующий блок сервера.