Foros del Web » Programando para Internet » PHP »

Redirigir, conservando variables ante un error 404

Estas en el tema de Redirigir, conservando variables ante un error 404 en el foro de PHP en Foros del Web. Se puede de alguna manera propagar las variables GET ante un error 404? Yo tengo una pagina para manejar el error, declarada en .htaccess. Pero ...
  #1 (permalink)  
Antiguo 22/04/2010, 10:07
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Redirigir, conservando variables ante un error 404

Se puede de alguna manera propagar las variables GET ante un error 404?

Yo tengo una pagina para manejar el error, declarada en .htaccess. Pero me interesa que ese pagina reciba las variables GET que estaban destinadas a la pagina inexistente, que dio error 404.

Se que puedo usar $_SESSION para almacenar variables y propagarlas. De hecho, lo estoy usando para ciertas variables que necesito recibir en 404.html pero también necesito unas variables GET (o definir 10 variables SESSION!!!).

Se puede?
  #2 (permalink)  
Antiguo 22/04/2010, 10:12
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: Redirigir, conservando variables ante un error 404

Usando la variable global $_GET. En el archivo de error 404 (que debe ser PHP o configurado para que interprete PHP) escribe:

Código PHP:
print_r($_GET); 
__________________
eft0's stuff! - http://estebanfernandez.net
  #3 (permalink)  
Antiguo 22/04/2010, 10:15
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Redirigir, conservando variables ante un error 404

Ah, detalle: puse 404.html cuando escribi en el foro. Pero mi archivo real es un php:

createTranslation.php

Che, print_r($_GET); me devuelve un array vacio. No se propagan las GET.
  #4 (permalink)  
Antiguo 22/04/2010, 10:57
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: Redirigir, conservando variables ante un error 404

Al parecer el ErrorDocument en htaccess no se le puede pasar parametros, seria algo como:

Código:
ErrorDocument 404 /404.php?$1 [L]
No lo e probado, quiza funcione. Otra alternativa es configurar todo lo que existe al index.php y lo que no a 404.php, algo asi:

Código:
Options -MultiViews
RewriteEngine on
#
RewriteRule ^([a-zA-Z0-9]+)$ http://www.example.com/$1.php [NC,R=301,L]
RewriteRule ^(.+)(/¦\.s?html?¦\.asp)$ http://www.example.com/$1.php [NC,R=301,L]
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /404_not_found.php?$1 [L]
Lo último que se me ocurre es que por PHP hagas el redireccionamiento al 404.php a travez de:

Código PHP:
header("Location: 404.php" $_SERVER['QUERY_STRING'] ); 
Avisame como te va.
__________________
eft0's stuff! - http://estebanfernandez.net
  #5 (permalink)  
Antiguo 22/04/2010, 11:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Redirigir, conservando variables ante un error 404

Bueno, son 3 propuestas.

La primera, me da Internal Server Error. Y si quito la [L] obtengo un array con un elemento de clave $1
Array ( [$1] => )

La segunda es complicada y la voy a probar despues de estudiarla.

La tercera no se apica a mi caso, porque yo no estoy redireccionando a 404.php, sino que ante la inexistencia de una pagina, el .htaccess redirige a 404.php.

Esto es el contexto de un manual en varios idiomas: si yo quiero ver una pagina en aleman, y la pagina no existe, el .htaccess me redirige a createTranslation.php
  #6 (permalink)  
Antiguo 22/04/2010, 11:24
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Redirigir, conservando variables ante un error 404

Hey! Quizas con modRewrite se pueda, pero prefiero evitarlo porque voy a alojar la pagina en un servidor ajeno, y desconozco si permiten modRewrite. Voy que funciona con expresiones regulares y en algun momento voy a tratar de manejarlo.

Ahora creo que lo mejor es atacar el problema en el origen, eliminando los links a pagina inexistentes. Ojalá funcione esto, y no quite usabilidad a la pagina.

Gracias!

Etiquetas: redirigir, variables
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 11:33.