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;