Como redirecionar o caminho usando o nginx ao remover parte do caminho

0

Usando o nginx 1.8.1 no CentOS Linux, estou tentando fazer o seguinte:

  • Redirecionar tráfego de server_name server1.olddomain.com; para server2.newdomain.com
  • Ao fazer isso, remova sites do caminho.

Por exemplo, um snippet modificado de nginx.conf .

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

Embora isso funcione conforme o esperado para a regra exata acima, qualquer outra coisa não funciona.

https://server1.olddomain.com/sites/ITDept/subfolder/subfolder não redireciona como desejado como https://server2.newdomain.com/ITDept/subfolder/subfolder . Ele redireciona para https://server2.newdomain.com/sites/ITDept/subfolder/subfolder .

Passei horas tentando descobrir a sintaxe correta sem sucesso. Espero que haja alguém que possa ajudar. Obrigado antecipadamente.

    
por canon 12.08.2016 / 15:25

2 respostas

0

Eu posso ter acabado de descobrir. Modificando a regra de reescrita para isso:

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

Parece fazer o truque. A menos que alguém tenha uma alternativa melhor. Ainda estou testando muitos links para determinar se isso vai funcionar, mas até agora tudo bem. Graças a este artigo. Como rápido e fácil remover parte de um URL no Nginx com HttpRewriteModule?

    
por 12.08.2016 / 16:06
0

Não tenho certeza do que você deseja fazer com os URIs que não começam com /sites , mas um simples rewrite deve ser tudo o que é necessário:

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

Veja este documento para detalhes.

    
por 12.08.2016 / 16:07