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

RewriteRule complicado (para mí)

Estas en el tema de RewriteRule complicado (para mí) en el foro de Apache en Foros del Web. Hola, se utilizar RewriteRule cuando la estructura siempre es la misma, por ejemplo: index.php?a=valor1&b=valor2&c=valor2 que equivale a: valor1/valor2/valor3 se haría: RewriteRule ^/([A-Za-z0-9-]+)/([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/?$ index.php?a=$1&b=$2&c=$3 [NC,L] El ...
  #1 (permalink)  
Antiguo 08/04/2009, 00:07
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
RewriteRule complicado (para mí)

Hola,

se utilizar RewriteRule cuando la estructura siempre es la misma, por ejemplo:

index.php?a=valor1&b=valor2&c=valor2 que equivale a: valor1/valor2/valor3 se haría:

RewriteRule ^/([A-Za-z0-9-]+)/([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/?$ index.php?a=$1&b=$2&c=$3 [NC,L]

El problema que tengo ahora es el siguiente. Estoy haciendo una web en la que no siempre existirán los mismos parámetros, o mejor dicho tan solo los 2 primeros serán siempre iguales, el resto son opcionales y dependen del segundo parámetro. La cosa es:

index.php?zona=&sintaxis= (hasta aquí siempre es igual)
pero dependiendo del valor de sintaxis, puede haber un &tag, &query o &codigo y en este último caso también puede existir un &titulo y en cualquiera de los casos podría existir un &pagina


ejemplos que podría tener:

Código:
index.php?zona=juegos&sintaxis=categoria&tag=pc&pagina=3 

juegos/categoria/pc/3

index.php?zona=comics&sintaxis=novedades 

comics/novedades

index.php?zona=juegos&sintaxis=novedades&pagina=2 

juegos/novedades/2

index.php?zona=juegos&sintaxis=busqueda&query=space&pagina=2 

juegos/busqueda/space/2

index.php?zona=juegos&sintaxis=videos&codigo=10343&titulo=le-fetiche-maya 

juegos/videos/10343/le-fetiche-maya

¿como se definine el RewriteRule para todo esto?

gracias

Última edición por dblanco; 08/04/2009 a las 00:51
  #2 (permalink)  
Antiguo 08/04/2009, 01:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: RewriteRule complicado (para mí)

necesitas estudiar expresiones regulares

ya que si bien es sencillo, es demasiado que alguien lo haga por ti...

te sugiero leas lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/


bien, otra es que escribas tus reglas ordenadamente, las de mayor importancia (con mas parámetros) primero, y consecutivamente las mas sencillas...

de este modo, aseguras cada expresión... no tienes que hacer todo en una!!


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/04/2009, 01:28
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: RewriteRule complicado (para mí)

a ver, no estoy pidiendo que se me diga el rewriteRule para cada uno de los ejemplos que he puesto, sino como se hace un rewrite que sirva para todos ellos a la vez.

Como he expuesto ya sé hacer un rewrite normal para pasar X parámetros, pero el tema es cómo se hace condicionalmente. Y vuelvo a resumir:

index.php?zone=valor1&syntax=valor2

si valor2 = "category" &tag=val3 opcional &page=val4
si valor2 = "search" &query=val3 opcional &page=val4
si valor2 = "video" &code=val3&title=val4 nada opcional
si valor2 = <cualquier otro valor> opcional &page=val3

Espero haberme explicado esta vez con mayor claridad.

Gracias

Última edición por dblanco; 08/04/2009 a las 03:42
  #4 (permalink)  
Antiguo 08/04/2009, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: RewriteRule complicado (para mí)

Tema trasladado desde PHP.
  #5 (permalink)  
Antiguo 08/04/2009, 13:18
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: RewriteRule complicado (para mí)

si es muy complicado el tema, por lo menos alguien sabría decirme cómo se hace un RewriteRule indicando que una variable es opcional?

por ejemplo, puedo tener:

index.php?sintaxis=categoria&tag=tortas&pagina=2

o sólo

index.php?sintaxis=categoria&tag=tortas

Como se hace para que no de error si accedo desde "midominio.com/categoria/tortas/" y no desde "midominio.com/categoria/tortas/2" ???


gracias
  #6 (permalink)  
Antiguo 08/04/2009, 19:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: RewriteRule complicado (para mí)

Puedes usar el signo de ? para que una parte sea opcional. Fíjate:
Código:
RewriteRule ^([^/]+)/?([^/]+)?$ index.php?var1=$1&var2=$2
Capturaría:
w3.pagina.com/seccion/parte ( w3.pagina.com/index.php?var1=seccion&var2=parte )
Como también:
w3.pagina.com/seccion ( w3.pagina.com/index.php?var1=seccion&var2= )
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 09/04/2009, 10:19
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: RewriteRule complicado (para mí)

ah, genial !!!

entonces en el ejemplo estás condicionando la var2, poniendo la condicion entre dos interroganes: ?([^/]+)?

Es correcto lo que digo?

muchas gracias y un saludo
  #8 (permalink)  
Antiguo 09/04/2009, 10:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: RewriteRule complicado (para mí)

En realidad, es opcional, no porque esté entre dos signos de interrogación, sino más bien, si te fijas:
/? (la barra es opcional), ([^/]+)? (esto otro también es opcional)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 09/04/2009, 15:20
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: RewriteRule complicado (para mí)

ahhh, okis, okis, comprendido.

en un foro extrangero me han contestado también este asunto y veo que añade : en el código y además pone el ? delante de la barra en lugar de detrás:

Código:
RewriteRule ^([^/]+)/([^/]+)(?:/([0-9]+))?/?$  

/index.php?zone=$1&syntax=$2&page=$3
¿alguna idea de para qué sirven los :?
  #10 (permalink)  
Antiguo 09/04/2009, 20:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: RewriteRule complicado (para mí)

En el enlace que te dejó pateketrueke se explican esos detalles:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 11/04/2009, 19:11
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: RewriteRule complicado (para mí)

no sí leer sé, pero entender no entiendo:

Código:
(?:) No captura subpatron - ((?:foo|fu)bar) 

captura foobar o fubar sin que foo o fu se capture como subpatron
saludos

Última edición por dblanco; 11/04/2009 a las 20:47
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 03:21.