Правило перезаписи Nginx для удаления узла пути
Допустим, пользователь пытается получить доступ к указанному изображению на моем сайте, используя следующий URL:http://www.mywebsite.com/blog/image1.jpg?someParam=100
Мне нужно переписать правило для этого, удалив узел "блог" из пути:
http://www.mywebsite.com/image1.jpg?someParam=100
2 ответа
Попробуй это:
location /blog {
rewrite ^/blog(/.*)$ $1 last;
}
Если вам это нужно для более чем одного сайта, вы не можете просто поместить его выше в иерархии, поскольку предложение "location" не может быть указано глобально, только для конкретного сайта. Если вам нужно добавить это предложение для двух или более сайтов, вы можете поместить его в другой файл конфигурации, а затем просто "включить" его в каждый сайт, для которого требуется это перенаправление.
В зависимости от того, где вы определяетеrewrite
директивы, у вас есть два способа ее реализации:
А. Вserver
контекст
server {
...
rewrite ^/blog(/.*)$ $1 last;
return 403;
...
}
Б. В контексте
location /blog {
rewrite ^/blog(/.*)$ $1 break;
}
Тео, почему ты сменил флаг на
break
? * Потому что, если эта директива помещена внутрьlocation
контекст,last
флаг может сделатьnginx
выполнить 10 циклов и вернуть ошибку 500.