Como encaminhar a consulta de URL no nginx dinamicamente e remover params extra

1

Eu tenho um par de mil URLs que se parecem com o seguinte:

https://www.example.com/supplier-shop/u-23452345/s-p/
https://www.example.com/supplier-shop/u-1714128138
https://www.example.com/supplier-shop/u-436877957/s-p
https://www.example.com/supplier-shop/u-32452345
https://www.example.com/supplier-shop/u-2345245664
https://www.example.com/supplier-shop/u-23452345/

Isso é do meu site herdado, mas nossa nova estrutura de URL é semelhante à seguinte:

www.example.com/seller/xxxxxxxx

Eu sei como reescrever URLs únicos, mas como eu faria um caso para todos os meus id ?

    
por NooBskie 01.06.2018 / 07:37

2 respostas

1

Esta é sua resposta:

location ~ ^/supplier-shop/(?<id>(.*)) {
    rewrite ^ http://$server_name/seller/$id permanent;
}

Funciona também para diretórios com n level. Exemplo:

> GET /supplier-shop/asdasd/asdasd HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.10.3 (Ubuntu)
< Date: Thu, 28 Jun 2018 00:10:02 GMT
< Content-Type: text/html
< Content-Length: 194
< Connection: keep-alive
< Location: http://www.example.com/seller/asdasd/asdasd
    
por 28.06.2018 / 02:09
1

Eu acho que com uma reescrita como a seguinte, você pode conseguir o que você está procurando

location ~ ^/supplier-shop/(.+) {
    rewrite ^ http://$server_name/seller/$1 permanent;
}

Acho que o link pode ser omitido, mas honestamente eu não tenho um nginx para tentar o que estou sugerindo agora, então é melhor experimentá-lo e ver os resultados.

Basicamente, o que ele faz é substituir o "fornecedor-shop" pelo "vendedor" e tomar tudo o que se segue e põe em prática.

Se não é o que você está tentando alcançar, avise-nos

    
por 21.06.2018 / 12:11

Tags