Nginx Mod Rewrite - переписать *.png в *.php

У меня проблема с перезаписью Nginx

В настоящее время мое правило, как показано ниже

переписать ^/i/(.*?)$ /i/$1.php last;

По сути, я хочу перенаправить все файлы.png в.php в каталоге / i. Тем не менее, кажется, что $ должен быть в конце, так что я не могу сделать

переписать ^/i/(.*?)$.png /i/$1.php last;

У кого-нибудь есть какие-нибудь решения?

Спасибо Бен

2 ответа

Запросы на файлы.png обрабатываются вашим location ~* \.(js|css|png|jpg|jpeg|gif|ico)$, Просто остановите обработку файлов png и добавьте новое местоположение, которое обрабатывает только их:

server {
  location ~* \.(js|css|jpg|jpeg|gif|ico)$ {
    # the same stuff you already had in here
  }

  location ~* ^(?<basename>.*)\.png$ {
    rewrite ^ $basename.php last;
  }

  # your other locations
}

О, теперь я вижу проблему.

Ваше правило переписывания выглядит так:

rewrite ^/i/(.*?)$ /i/$1.php last;

Так что это переписало бы /i/cute.png в /i/cute.png.php, Это, вероятно, не существует.

Вы сказали, что просто хотели изменить .png в .phpтак что попробуйте что-то вроде этого:

rewrite ^/i/(.*?).png$ /i/$1.php last;
Другие вопросы по тегам