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

[SOLUCIONADO] Novato intentando redirecciones - segunda parte

Estas en el tema de Novato intentando redirecciones - segunda parte en el foro de Apache en Foros del Web. Tengo un problemilla que no sé si podré hacerlo como quiero, explico la situación.. Estoy intentando que al entrar en la siguiente url: Cita: http://www.midominio.com/index.php?holaamigo=quetal ...
  #1 (permalink)  
Antiguo 03/02/2014, 08:25
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Novato intentando redirecciones - segunda parte

Tengo un problemilla que no sé si podré hacerlo como quiero, explico la situación..

Estoy intentando que al entrar en la siguiente url:

Cita:
http://www.midominio.com/index.php?holaamigo=quetal
Me redirija a la url "amigable" y en el navegador quede de la siguiente forma:

Cita:
http://www.midominio.com/quetal
Todo lo que intento me tira que la pagina tiene un bucle de redirección, seguramente sea una chorrada hacerlo o quizás no se pueda y yo estoy pensando que sí.. agradezco de antemano las posibles sugerencias, un abrazo !
  #2 (permalink)  
Antiguo 03/02/2014, 09:18
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Novato intentando redirecciones - segunda parte

Hola de nuevo.

Supongo que estás usando el mod_rewrite por el tema anterior.

Lo del bucle se soluciona fácilmente añadiendo estas condiciones arriba del RewriteRule:

Código Apache:
Ver original
  1. RewriteCond %{REQUEST_FILENAME} !-d
  2. RewriteCond %{REQUEST_FILENAME} !-f


Saludos
  #3 (permalink)  
Antiguo 03/02/2014, 10:13
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Novato intentando redirecciones - segunda parte

Cita:
Iniciado por PHPeros Ver Mensaje
Hola de nuevo.

Supongo que estás usando el mod_rewrite por el tema anterior.

Lo del bucle se soluciona fácilmente añadiendo estas condiciones arriba del RewriteRule:

Código Apache:
Ver original
  1. RewriteCond %{REQUEST_FILENAME} !-d
  2. RewriteCond %{REQUEST_FILENAME} !-f


Saludos

Buenas tardes PHPeros ! muchas gracias por tu rápida respuesta macho te invitaría a una cerveza pero posiblemente vivas en la otra punta del mundo, yo de ( España/Canarias )

Bueno lo que me pones lo probé pero no me redirige si alguien accede desde algo así:

Cita:
http://www.midominio.com/index.php?hola=quetal
Sigue quedando en el navegador la url por la que entra y no lo redirige a la url amigable, lo que quiero es que al entrar por esta url se reescriba y deje la amigable, es posible hacerlo ? con el problema anterior si me funciona perfectamente pero por que son url diferentes, pero siendo la misma url no me la reescribe no sé por que..


Edito y pongo ejemplo de lo que tengo echo ahora mismo:

Cita:
RewriteCond %{QUERY_STRING} &?hola= [or]
RewriteCond %{QUERY_STRING} &?holaa=
RewriteRule ^ /paginas/${pages:%1¦NULL}? [R=301,L]
Esto me deja la url de la siguiente manera:

Cita:
http://www.midominio.com/paginas/
Si accedo por la siguiente url:

Cita:
http://www.midominio.com/index.php?hola=quetal
Quiero si es posible dejarla así:

Cita:
http://www.midominio.com/quetal

Apunte por si acaso que esto me esté jodiendo con lo que quiero hacer y yo como soy un auténtico paquete no me de cuenta, tengo esto también puesto para que si entro desde la siguiente url funcione como quiero:

Cita:
http://www.midominio.com/quetal
Este último ejemplo me funciona, lo que quiero es que solo trabaje una de cara a la galería, es decir la otra url la "fea" para google redirija a la buena.. menudo testamento e puesto madre de la virgen santa..

Cita:
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?hola=$1 [R=301,L]

Última edición por olester20_fiesta; 03/02/2014 a las 10:31
  #4 (permalink)  
Antiguo 03/02/2014, 10:34
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Novato intentando redirecciones - segunda parte

Estas son otro tipo de back-references:

Código apache:
Ver original
  1. RewriteCond %{QUERY_STRING} &?hola=(.+) [OR]
  2. RewriteCond %{QUERY_STRING} &?holaa=(.+)
  3. RewriteRule .* /paginas/%1 [R=301,L]


Última edición por PHPeros; 03/02/2014 a las 10:47
  #5 (permalink)  
Antiguo 03/02/2014, 17:30
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Novato intentando redirecciones - segunda parte

Cita:
Iniciado por PHPeros Ver Mensaje
Estas son otro tipo de back-references:

Código apache:
Ver original
  1. RewriteCond %{QUERY_STRING} &?hola=(.+) [OR]
  2. RewriteCond %{QUERY_STRING} &?holaa=(.+)
  3. RewriteRule .* /paginas/%1 [R=301,L]

Desgraciadamente tampoco me funciona, estoy pensando en que sea imposible reescribir la URL dinámica y convertirla en la amigable al acceder por la primera sin que se genere un bucle, e intentado lo siguiente pero no me comprueba la URL en la que estoy o lo estoy haciendo mal

Código Apache:
Ver original
  1. RewriteCond %{QUERY_STRING} ^hola=(.+)$ [OR]
  2. RewriteCond %{QUERY_STRING} ^holaa=(.+)$
  3. RewriteCond %{REQUEST_URI} !/paginas/%1${pages:%1¦NULL}? [NC]
  4. RewriteRule .* /paginas/%1${pages:%1¦NULL}? [L,R=301]

El request_uri debería frenar el bucle pero no lo hace
  #6 (permalink)  
Antiguo 04/02/2014, 09:55
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Novato intentando redirecciones - segunda parte

¡Ah! Se me olvidó escapar ?, porque es un metacaracter:

Código Apache:
Ver original
  1. RewriteCond %{QUERY_STRING} \?hola=(.+) [OR]
  2. RewriteCond %{QUERY_STRING} \?holaa=(.+)
  3. RewriteRule .* /paginas/%1 [R=301,L]
  #7 (permalink)  
Antiguo 04/02/2014, 11:05
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Novato intentando redirecciones - segunda parte

Cita:
Iniciado por PHPeros Ver Mensaje
¡Ah! Se me olvidó escapar ?, porque es un metacaracter:

Código Apache:
Ver original
  1. RewriteCond %{QUERY_STRING} \?hola=(.+) [OR]
  2. RewriteCond %{QUERY_STRING} \?holaa=(.+)
  3. RewriteRule .* /paginas/%1 [R=301,L]

De esta forma no hace ningún cambio, aunque debería hacerlo no reconoce el \ que no sé que función tiene :S

Código Apache:
Ver original
  1. RewriteCond %{QUERY_STRING} \?hola=(.+) [OR]
  2. RewriteCond %{QUERY_STRING} \?holaa=(.+)
  3. RewriteRule .* /paginas/%1 [R=301,L]

Lo que más se asemeja o digamos cumple la función que quiero es esto:

Código Apache:
Ver original
  1. RewriteCond %{QUERY_STRING} ^?hola=(.+)$ [OR]
  2. RewriteCond %{QUERY_STRING} ^?holaa=(.+)$
  3. RewriteCond %{REQUEST_URI} !/paginas/%1${pages:%1¦NULL}? [NC]
  4. RewriteRule .* /paginas/%1${pages:%1¦NULL}? [R=301,L]

pero genera un bucle infinito..

Linea 1 -- Si contiene hola=(algo)
Linea 2 -- O contiene holaa=(algo)
Linea 3 -- Compruebo si la url tiene el "1%" que debería ser (algo) y redirecciono ( Pero no funciona esta comprobación )
Linea 4 -- redirecciona correctamente a donde quiero y elimino query_string con lo que me enseñastes en el otro post. ( Es la misma url pero la amigable )

Estoy pensando que lo que quiero hacer es imposible, en fin PHPeros que te agradezco mucho tus respuestas, en el post anterior me solucionastes la papeleta, si llegas a solucionarme esta también tendría que ponerle tu nombre a mi hijo y si lo hiciera posiblemente sufriría de bullig en el colegio No quiero seguir molestando que bastante te has exprimido ya la cabeza, un abrazo amigo y muchos exitos, me tendré que joder y buscar la forma de que google no me saque las feas
  #8 (permalink)  
Antiguo 04/02/2014, 11:30
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Novato intentando redirecciones - segunda parte



Bueno, aquí pongo mi última opción para evitar el bucle:

Código apache:
Ver original
  1. RewriteCond %{ENV:REDIRECT_STATUS} !200
  2. RewriteCond %{QUERY_STRING} ^\?hola=(.+)$ [OR]
  3. RewriteCond %{QUERY_STRING} ^\?holaa=(.+)$
  4. RewriteCond %{REQUEST_URI} !/paginas/%1${pages:%1¦NULL}? [NC]
  5. RewriteRule .* /paginas/%1${pages:%1¦NULL}? [R=301,L]

Si no funciona empezaré a llorar como un descosido
  #9 (permalink)  
Antiguo 05/02/2014, 10:41
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Novato intentando redirecciones - segunda parte

Cita:
Iniciado por PHPeros Ver Mensaje


Bueno, aquí pongo mi última opción para evitar el bucle:

Código apache:
Ver original
  1. RewriteCond %{ENV:REDIRECT_STATUS} !200
  2. RewriteCond %{QUERY_STRING} ^\?hola=(.+)$ [OR]
  3. RewriteCond %{QUERY_STRING} ^\?holaa=(.+)$
  4. RewriteCond %{REQUEST_URI} !/paginas/%1${pages:%1¦NULL}? [NC]
  5. RewriteRule .* /paginas/%1${pages:%1¦NULL}? [R=301,L]

Si no funciona empezaré a llorar como un descosido
Que grande tio !! que grande eres macho !! ya lo daba por perdido y me has solucionado de nuevo la papeleta, funciona tal como quería..el que va a llorar soy yo te daba un beso sin mariconeos coño un abrazo PHPeros no te molesto más que ya bastante me has solucionado, muchisima suerte en todo lo que hagas tio que te lo mereces por buena gente, un saludo !

Etiquetas: parte, segunda, url
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:34.