У меня есть 2 сценария:
/media/cache/test.jpg
или stylesheet / theme / xxxx.css
создается приложением. Это не статический файл, присутствующий в файловой системе.
/assets/test.jpg
- статический файл, присутствующий на хосте
Я хочу, чтобы оба файла были кэшированы браузером, добавляя истекает 6M Заголовок
.
Итак, я сделал:
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
location ~ ^/(index)\.php(/|$) {
fastcgi_pass unix...;
internal;
}
location ~ \.php$ {
return 404;
}
# assets, media
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif)$ {
expires 6M;
access_log off;
# try accessing the file directly, and if not found
# it means the application has to generate it,
# so reroute to the @rewriteapp rule.
try_files $uri @rewriteapp;
}
Проблема в том, что nginx обнаруживает цикл:
* 194369 цикл перезаписи или внутреннего перенаправления при перенаправлении в указанное место "@rewriteapp", клиент: 127.0.0.1, сервер: , запрос: "GET /stylesheet/theme/3441-1484735061.css
Что мне не хватает, пожалуйста?
Хорошо, поэтому замена try_files $ uri @rewriteapp;
на try_files $ uri /index.php$is_args$args;
, похоже, решает проблему .