Как перенаправить путь с помощью nginx, удалив часть пути

Используя nginx 1.8.1 на CentOS Linux, я пытаюсь сделать следующее:

  • Перенаправить трафик с server_name server1.olddomain.com; на server2.newdomain.com
  • При этом удалите sites из пути.

Например, измененный фрагмент из nginx.conf.

server {
   ...
   server_name server1.olddomain.com;
   ...
   location /sites/ITDept {
        rewrite ^(.*) https://server2.newdomain.com/ITDept;
}

Хотя это работает, как и ожидалось, для точного правила выше, все остальное не работает.

https://server1.olddomain.com/sites/ITDept/subfolder/subfolder не перенаправляет так же, как https://server2.newdomain.com/ITDept/subfolder/subfolder. Он перенаправляет на https://server2.newdomain.com/sites/ITDept/subfolder/subfolder.

Я потратил несколько часов на безуспешные попытки выяснить правильный синтаксис. Надеюсь, что найдется человек, который сможет помочь. Заранее благодарю.

0
12.08.2016, 16:31
2 ответа

Возможно, я только что понял это. Изменив правило перезаписи на это :

rewrite ^ / sites /(.*)$ https://server2.newdomain.com/$1 last;

Кажется, свое дело. Если только у кого-то нет лучшей альтернативы. Я все еще тестирую много ссылок, чтобы определить, сработает ли это, но пока все хорошо. Благодаря этой статье. Как быстро и легко удалить часть URL-адреса в Nginx с помощью HttpRewriteModule?

1
28.01.2020, 04:50

Не знаете, что вы хотите делать с URI, которые не начинаются с / sites , но простая перезапись должна быть всем, что требуется:

server {
    server_name server1.olddomain.com;
    rewrite ^/sites(.*)$ https://server2.newdomain.com$1 permanent;
    return 404;
}

Подробнее см. этот документ .

0
28.01.2020, 04:50

Теги

Похожие вопросы