Nginx redirecionamento simples de produtos da categoria antiga para a nova


9

Estou fazendo redirecionamentos de produtos da antiga para a nova categoria.

Eu consegui fazê-lo funcionar com a seguinte regra:

rewrite ^/old-category/(.*) /new-category/$1;

Mas quero saber quando devo usar o sinal "end line" $ e qual é a diferença com ele ou sem ele no meu caso. Por exemplo:

rewrite ^/old-category/(.*)$ /new-category/$1;

Também quero redirecionar os usuários se eles simplesmente escreverem o nome antigo da categoria (sem produtos), devo criar uma nova regra apenas para o redirecionamento da categoria ou posso editar a regra atual acima para funcionar nos dois casos.

Obrigado por suas respostas com antecedência.

Respostas:


9

Respondendo suas perguntas em ordem ...

este

rewrite ^/old-category/(.*) /new-category/$1;

e isto

rewrite ^/old-category/(.*)$ /new-category/$1;

conforme escrito são equivalentes. A .*regra corresponde a 0 ou mais de "tudo", portanto $é redundante / não é realmente necessário.

O $terminador é útil quando você deseja combinar cadeias que terminam de uma maneira específica , por exemplo

rewrite ^/old-category/(.*)\.php$ /new-category/$1;

reescrever apenas arquivos PHP .

Quanto à sua segunda pergunta, se entendi corretamente, você deseja redirecionar esse

http://example.com/old-category/

para isso

http://example.com/new-category/

Nesse caso, isso já é feito pela rewriteregra, pois .*corresponde a zero ou mais caracteres.


3
Boa pergunta, boa resposta. Muitas pessoas definem o $ por padrão (ou o deixam de fora por padrão) sem pensar no que realmente significa. Toda vez que vejo (. *) $ Eu me encolho. Eu não tentei, mas pode ser que deixar de fora o $ nesse caso possa ter um desempenho um pouco melhor, pois é outra regra que a regex precisa verificar. Seria interessante obter uma resposta para essa pergunta: D
Broco 8/08
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.