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

Expresión regular para Mod_rewrite - Palabra completo expresiones regulares

Estas en el tema de Expresión regular para Mod_rewrite - Palabra completo expresiones regulares en el foro de Apache en Foros del Web. Buenas, Tengo una duda que me ha surgido con las expresiones regulares a la hora de usarlas para el MOD_Rewrite de url amigables. Actualmente tengo ...
  #1 (permalink)  
Antiguo 08/11/2011, 12:37
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 19 años, 1 mes
Puntos: 14
Expresión regular para Mod_rewrite - Palabra completo expresiones regulares

Buenas,

Tengo una duda que me ha surgido con las expresiones regulares a la hora de usarlas para el MOD_Rewrite de url amigables.

Actualmente tengo esto:

Código:
RewriteRule ^([a-zA-Z0-9\(\)-]+)/([a-zA-Z\(\)-]+)/$ ?s=$1&c=$2
Que tomará el siguiente aspecto:
www.tuweb.com/noticias/nombre-del-articulo/

Coge como primer parámetro "noticias"
Como segundo "nombre-del-artículo"

El primer parámetro puede variar a veces dependiendo de la sección de la página donde me encuentre.
Pero me preguntaba si puedo poner en el htaccess ya el nombre de la sección para quitarme de lios al escribir más reglas y hacer algo así:

Código:
RewriteRule ^noticias/([a-zA-Z\(\)-]+)/$ ?s=$1&c=$2
Pero claro, ahora ya no me coge el primer parámetro como "noticias" porque no es una expresión regular.

¿Cómo puedo indicar en una expresión regular que quiero todo el texto "noticias" para que me lo coja en el primer parámetro (?s=$1) y lo pueda recibir luego por GET?

Un saludo y gracicas.
  #2 (permalink)  
Antiguo 08/11/2011, 15:17
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 2 meses
Puntos: 140
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

RewriteRule ^noticias/([a-zA-Z\(\)-]+)/$ ?s=noticias&c=$1

Saludos
  #3 (permalink)  
Antiguo 08/11/2011, 18:34
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

Cita:
Iniciado por charlyalegret Ver Mensaje
RewriteRule ^noticias/([a-zA-Z\(\)-]+)/$ ?s=noticias&c=$1

Saludos
Jajajajajaj pues no había caído.... hay que ver.
Ok gracias ;)
  #4 (permalink)  
Antiguo 08/11/2011, 22:37
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

Si tus secciones pueden variar, yo me inclinaría por esto

Código Apache:
Ver original
  1. RewriteRule ^([^/]*)/([^/]*)$ /?seccion=$1&articulo=$2 [L]

tus urls quedarían como
http://tuweb.com/noticias/nombre_del_articulo ó
http://tuweb.com/novedades/nombre_de_la_novedad
y cosas por el estilo

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 09/11/2011, 02:51
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

¿Qué diferencia hay con lo que puse en el primer post entonces?


No puedo hacer eso porque tengo cosas como:

Código PHP:
RewriteRule ^([a-zA-Z0-9()-]+)/([a-zA-Z0-9()-]+)-([0-9]+)/$ ?s=$1&n=$2&p=$3

RewriteRule 
^([a-zA-Z0-9()-]+)/([a-zA-Z0-9()-]+)/([0-9]+)/$ ?s=$1&c=$2&_pagi_pg=$
Donde, como puedes ver, la estructura de la URL es la misma pero las variables son diferentes.

Se metería en la primera expresión siempre y me fallaría.
  #6 (permalink)  
Antiguo 09/11/2011, 07:55
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

Si tu php siempre es el mismo, y le estas pasando diferentes argumentos, podes agregarle un sufijo a cada regla para diferenciarlas (te cambio las varables para hacerlo más gráfico)

Ejemplo
caso1

url original
http://misitio.com/?a=1&b=2&c=3
url usando mrewrite
http://misitio.com/novedades_imac-1/2/3

regla
Código Apache:
Ver original
  1. RewriteRule ^novedades_imac-([^/]*)/([^/]*)/([^/]*)$ /?a=$1&b=$2&c=$3 [L]

caso2

url original
http://misitio.com/?a=1&e=2&d=3
con modrewrite
http://misitio.com/otrotexo-1/2/3

regla
Código Apache:
Ver original
  1. RewriteRule ^otrotexo-([^/]*)/([^/]*)/([^/]*)$ /?a=$1&e=$2&d=$3 [L]

Desde luego que "novedades_imac" y "otrotexto" pueden ser otras palabras, diferentes entre sí y mas descriptivas segun el contenido de tu web


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 10/11/2011, 16:38
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: Expresión regular para Mod_rewrite - Palabra completo expresiones regulare

Gracias Emprear, ya prové esa opción después de publicar el mensaje y la verdad es que es la que uso actualmente.

Un saludo!

Etiquetas: completo, expresiones, palabra, regular, regulares
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 19:55.