Foros del Web » Administración de Sistemas » Dominios »

htaccess cambiar ID's de delante a tras de la url.

Estas en el tema de htaccess cambiar ID's de delante a tras de la url. en el foro de Dominios en Foros del Web. Buenas. Antes de escribir, he estado mirando en mil lugares, tutoriales y demás. Necesito redireccionar la siguiente url http://www.dominio.com/123-3-producto.html a http://www.dominio.com/3-producto-123.html En htaccess tengo lo ...
  #1 (permalink)  
Antiguo 15/02/2014, 20:24
 
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta htaccess cambiar ID's de delante a tras de la url.

Buenas.

Antes de escribir, he estado mirando en mil lugares, tutoriales y demás.

Necesito redireccionar la siguiente url

http://www.dominio.com/123-3-producto.html

a

http://www.dominio.com/3-producto-123.html

En htaccess tengo lo siguiente.

RewriteCond %{HTTP_HOST} ^www.dominio.com$
RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*)\.html$ http://www.dominio.com/$2-$1.html? [R=301,L]


Me va de maravilla con las urls que en su nombre no empiezan con número, pero con las urls empiezan con un número el resultado de la redirección es el siguiente

http://www.dominio.com/producto-123-3.html

Teniendo en cuenta que cada paréntesis es una variable, no entiendo como se guarda el "-3" en la variable $1.

Que yo sepa ([0-9]+) debería de capturar únicamente números, ¿no?

¿Por qué captura el guión y los siguientes números que aparecen, cuando solo deberíade unicamente números juntos?

Que decir de las url's que son del tipo

http://www.dominio.com/123-567.html

Entra en un bucle infinito, aunque tenga el flag "L"

¿alguna idea?

Gracias!

Última edición por jmoya; 15/02/2014 a las 20:29
  #2 (permalink)  
Antiguo 16/02/2014, 06:16
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: htaccess cambiar ID's de delante a tras de la url.

Para empezar hay un foro dedicado a Apache y sus módulos, que se está muriendo de aburrimiento

En expresiones regulares el patrón [0-9] captura todos los números, como -3 que en este caso es un número negativo.

Respecto al tema del bucle, es algo que ocurre mucho, se soluciona con una condición:

Código Apache:
Ver original
  1. RewriteCond %{ENV:REDIRECT_STATUS} !200

Saludos
  #3 (permalink)  
Antiguo 16/02/2014, 09:54
 
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: htaccess cambiar ID's de delante a tras de la url.

Gracias por la respuesta, pero no funciona.

Efectivamente coge el -3 como número negativo, entonces la idea sería encontrar una función que cogiera únicamente los números positivos.

he probado con [\d] que son dígitos, pero nada.

Alguna expresión debe de haber para que captura únicamente números positivos, o que descarte los números negativos.
  #4 (permalink)  
Antiguo 16/02/2014, 10:10
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: htaccess cambiar ID's de delante a tras de la url.

¿Has probado con [1-9]\d*?

Última edición por PHPeros; 16/02/2014 a las 10:20

Etiquetas: htaccess, tras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:10.