nginx выполняет .php как .gif правила перезаписи файла - PullRequest
0 голосов
/ 19 октября 2019

для меня было довольно сложно получить доступ к этому:

mysite.com/cookie/image.php?perma=perma1

как это;

mysite.com/cookie/perma1.gif

или

mysite.com/cookie/image.php?perma=perma1

как

mysite.com/cookie/perma2.gif

Поэтому всякий раз, когда я запрашиваю perma1.gif or perma2.gif в фоновом режиме, nginx запускает

image.php?perma=perma1

и

image.php?perma=perma2 

соответственно.

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Так что всякий раз, когда Я запрашиваю perma1.gif или perma2.gif в фоновом режиме, nginx запускается

Это означает, что try_files совершенно не нужно, не толькоОтвет @MatWer всегда будет пытаться проверить наличие, например, /cookie/perma1.gif, но также проверить наличие каталога /cookie/perma1.gif/ (это два ненужных системных вызова stat).

Наиболее эффективным является простойперезаписать в контексте server (вне любого location):

rewrite ^/cookie/(.*)\.gif$ /cookie/image.php?perma=$1 last;
1 голос
/ 19 октября 2019

Итак, для вашей проблемы правильное правило для вашего nginx server.conf должно быть:

location ~* ^/cookie/(.*)\.(gif)$ {
    try_files $uri $uri/ /cookie/image.php?perma=$1;
}

Это правило означает:

  1. Только для использования в подпапке / cookie/
  2. Используется только gif Filetype
  3. , пытающийся, если gif существует
  4. , если не перенаправить на cookie / image.php
  5. и дать имя файла gifкак GET perma

... это должно работать для вашей проблемы.

...