Redirecionamento de todas as URLs que contêm 1 palavra em específico, mas que não contêm outras palavras

1

Estou migrando meu site para outra plataforma, mas enquanto termino de desenvolver todas as páginas do novo site, preciso que meus usuários naveguem entre as duas plataformas.

Por isso, preciso fazer um redirecionamento 301 de todas as URLs que contenham uma palavra em específico, mas que não contenham outras palavras:

Exemplo:

  1. site antigo: www2.misite.com
  2. Novo site: www.misite.com

Eu preciso redirecionar todos os URLs que contenham a palavra "www2.misite.com/travel(.*)", mas não contêm as palavras "reservation" e "hotel".

Meu servidor é Nginx, não sei se isso é feito com uma expressão regular ou com instruções nginx.

Muito obrigado.

    
por Alorse 11.03.2017 / 00:42

3 respostas

4

Consegui resolver meu problema da seguinte maneira:

    location ~ /travel(.*)+/(.*)$ {
    if ($uri !~ "^(.*)/(reservation|hotel|faq)(.*)"){
        return 301 https://www.misite.com$request_uri;
    }
    autoindex on;
    root /usr/share/nginx/html/sites/;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

Obrigado.

    
por 11.03.2017 / 19:01
0

Tente uma expressão regular com um olhar negativo para as duas palavras que você não deseja encaminhar. Você poderia fazer isso em uma condição if ou em uma regra de reescrita.

    
por 11.03.2017 / 08:24
0

Eu tento

location ~ /travel(.*)+/(.*)$ {
    if ($request_uri !~ "^/(reservation|hotel|faq)/\w+$"){
        return 301 https://www.misite.com/$1;
    }
}

Mas não funciona para condições internas. : (

    
por 11.03.2017 / 17:06