Используя 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
.
Я потратил несколько часов на безуспешные попытки выяснить правильный синтаксис. Надеюсь, что найдется человек, который сможет помочь. Заранее благодарю.
Возможно, я только что понял это. Изменив правило перезаписи на это :
rewrite ^ / sites /(.*)$ https://server2.newdomain.com/$1 last;
Кажется, свое дело. Если только у кого-то нет лучшей альтернативы. Я все еще тестирую много ссылок, чтобы определить, сработает ли это, но пока все хорошо. Благодаря этой статье. Как быстро и легко удалить часть URL-адреса в Nginx с помощью HttpRewriteModule?
Не знаете, что вы хотите делать с URI, которые не начинаются с / sites
, но простая перезапись
должна быть всем, что требуется:
server {
server_name server1.olddomain.com;
rewrite ^/sites(.*)$ https://server2.newdomain.com$1 permanent;
return 404;
}
Подробнее см. этот документ .