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

expresion regular en urls

Estas en el tema de expresion regular en urls en el foro de Apache en Foros del Web. Como tendría que hacer para que la última variable de la urls pueda acabar con /a-123/ o /b-333/ o las dos juntas /a-123/b-333/ ejemplo RewriteRule ...
  #1 (permalink)  
Antiguo 22/05/2015, 16:48
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 4 meses
Puntos: 5
expresion regular en urls

Como tendría que hacer para que la última variable de la urls pueda acabar con /a-123/ o /b-333/ o las dos juntas /a-123/b-333/
ejemplo

RewriteRule ^producto/([a-z0-9_-]+)/$ producto.php?codigo=$1

Quedando así la urls
dominio.com/producto/cod_1001/

Hasta aquí bien pero yo quiero que la última variable que ahora seria así cod_1001pueda acabar de estas cuatro maneras.

/cod_1001/
/cod_1001/a-123/
/cod_1001/b-333/
/cod_1001/a-123/b-333/

Gracias de antemano y espero que alguien me ayude.
  #2 (permalink)  
Antiguo 23/05/2015, 07:55
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: expresion regular en urls

Cita:
Iniciado por primary
Como tendría que hacer para que la última variable de la urls pueda acabar con /a-123/ o /b-333/ o las dos juntas /a-123/b-333/
Código Apache:
Ver original
  1. ^producto/(\w+)/(a-123)?(b-333)?/?$

Última edición por PHPeros; 23/05/2015 a las 09:53 Razón: update
  #3 (permalink)  
Antiguo 23/05/2015, 08:52
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: expresion regular en urls

Hola muchas gracias PHPeros, ahora tengo el siguiente error con otra url es esta exactamente.

Código Apache:
Ver original
  1. RewriteRule ^((producto|caducidad)+(/codigo_[0-9]+)?)/(id_(.*))/$ index.php?codigo=$1&id=$2 [L]


dominio.com/producto/cod_1001/id_2323/
o
dominio.com/caducidad/id_2323/


es decir que la url tiene dos variables codigo y id, siendo codigo_1001(o lo que sea) opcional pero cuando imprimo las variables por ejemplo para esta url

dominio.com/producto/cod_1001/id_2323/

codigo -> producto/cod_1001

id -> producto

el id esta mal, que estoy fallando el la expresion regular, saludos.

Última edición por primary; 24/05/2015 a las 07:13
  #4 (permalink)  
Antiguo 24/05/2015, 16:32
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: expresion regular en urls

nadie me puede ayudar con la expresion regular, pongo ejemplo de donde esta mi duda.

Serian dos urls donde una tiene dos variables la otra sola una pero la primera variable puede o no tener un patro como este /cod_111/

las reglas que intento son de este estilo

regla con dos variables

Código Apache:
Ver original
  1. RewriteRule ^(producto|caducidad)/(cod_[0-9]+)?/(\d+)/$ index.php?producto=$1&id=$2 [L]

ejemplo urls

dominio.com/producto/cod_999/1111/

o

dominio.com/producto/1111/


regla con una variable
Código Apache:
Ver original
  1. RewriteRule ^(producto|caducidad)/(cod_[0-9]+)?/$ index.php?producto=$1 [L]

ejemplo urls

dominio.com/producto/cod_999/

o

dominio.com/producto/

El problema esta cuando uso un / en una misma variable me crea un conflicto y mas cuando puede existir o no esa regla, cualquier ayuda se agradece, saludos.
  #5 (permalink)  
Antiguo 25/05/2015, 07:53
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: expresion regular en urls

Hola, voy a intentar explicarme mejor porque quizas asi me puedan ayudar, soy bastante malo con las expresiones regulares pero no creo que nadie no sepa hacer lo que intento, pongo ejemplo y explico mi problema.

Código Apache:
Ver original
  1. RewriteRule ^(aaa|bbb)/(cod_[0-9]+)/$ index.php?var1=$1&var2=$2 [L]

con esta regla las url pueden ser asi:

dominio.com/aaa/cod_222/


siendo estos los valores de las variables

var1=aaa
var2=cod_222


hasta aqui no hay duda ni problema pero mi problema empieza cuando la primera regla lo que esta entre parentesis (aaa|bbb) puedo o no tener otra cadena añadida algo como esto /id_111 es decir que las variables quedarian de esta forma

var1=aaa/id_111
var2=cod_222

lo que probe aparte de muchas cosas mas es una regla como esta


Código Apache:
Ver original
  1. RewriteRule ^(aaa|bbb(/id_[0-9]+)?)/(cod_[0-9]+)/$ index.php?var1=$1&var2=$2 [L]


pero no funciona no se si se entiende mi problema, espero que alguien me pueda decir donde estoy fallando,saludos.
  #6 (permalink)  
Antiguo 27/05/2015, 08:10
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 11 años, 5 meses
Puntos: 401
Respuesta: expresion regular en urls

Si no te importa, postea el .htaccess completo. Parece que tienes un conflicto entre reglas.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-

Etiquetas: htaccess
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 20:09.