Redirección simple de Nginx de productos de categoría antigua a nueva


9

Estoy haciendo redireccionamientos de productos de la categoría antigua a la nueva.

He logrado que funcione con la siguiente regla:

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

Pero quiero saber cuándo debo usar el signo de "línea final" $ y cuál es la diferencia con él o sin él en mi caso. Por ejemplo:

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

También quiero redirigir a los usuarios si simplemente escriben el nombre de la categoría anterior (sin productos), si creo una nueva regla solo para la redirección de categoría o puedo editar la regla actual anterior para que funcione en ambos casos.

Gracias por sus respuestas de antemano.

Respuestas:


9

Respondiendo sus preguntas en orden ...

Esta

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

y esto

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

según lo escrito son equivalentes. La .*regla coincide con 0 o más de "todo", por lo que $es redundante / no es realmente necesario.

El $terminador es útil cuando desea hacer coincidir cadenas que terminan de una manera específica , por ejemplo

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

reescribir solo archivos PHP .

En cuanto a su segunda pregunta, si entendí correctamente, desea redirigir esto

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

a esto

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

Si es así, ya está hecho por la rewriteregla, ya que .*coincide con CERO o más personajes.


3
Buena pregunta, buena respuesta. Muchas personas establecen $ por defecto (o lo dejan fuera por defecto) sin pensar en lo que realmente significa. Cada vez que veo (. *) $ Me estremezco. No lo intenté, pero podría ser que dejar de lado el $ en este caso podría tener un rendimiento ligeramente mejor, ya que es otra regla que la expresión regular debe verificar. Sería interesante obtener una respuesta a esa pregunta: D
Broco
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.