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

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

У меня проблема с Nginx Rewrites

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

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

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

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

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

Спасибо Бен

Запросы на файлы .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;