Правило перезаписи 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.

Другие вопросы по тегам