Nginx redirecionamento simples de produtos da antiga para a nova categoria

9

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

Consegui fazê-lo funcionar com a seguinte regra:

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

Mas eu quero saber quando devo usar o sinal "end line" $ e qual é a diferença com 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 da categoria antiga (sem produtos), devo criar uma nova regra apenas para o redirecionamento de categoria ou posso editar a regra atual acima para trabalhar nos dois casos.

Obrigado pelas suas respostas antecipadamente.

    
por Analogtime 08.10.2018 / 11:45

1 resposta

9

Respondendo suas perguntas em ordem ...

Isso

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

e isso

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

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

O $ terminator é útil quando você quer combinar strings que terminam de um modo específico , por exemplo

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

para reescrever somente arquivos PHP .

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

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

para isso

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

Se for o caso, isso já é feito pela regra rewrite , pois .* corresponde a ZERO ou mais caracteres.

    
por 08.10.2018 / 13:02