Foros del Web » Programando para Internet » PHP »

Generar error 404 PHP

Estas en el tema de Generar error 404 PHP en el foro de PHP en Foros del Web. Hola todos, tengo el siguiente codigo en mi .htaccess: Código HTML: Options +FollowSymlinks RewriteEngine on RewriteRule ^(.*)\.(html|htm|php)$ layout.php?mod=$1.$2 [QSA] Con esto logro pasar los archivos ...
  #1 (permalink)  
Antiguo 18/01/2010, 15:40
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Generar error 404 PHP

Hola todos,

tengo el siguiente codigo en mi .htaccess:

Código HTML:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.(html|htm|php)$ layout.php?mod=$1.$2 [QSA]
Con esto logro pasar los archivos php, html, htm como una variable a mi layout para que el lo cargue con un require. Ahora; En caso que se ingrese un nombre de archivo php, html o htm que no existe quisiera me arroje un error 404 como si no estubiera el RewriteRule.

Alguien sabe como podria yo hacer esto?

Recuerdo haber visto en algun lado instrucciones de un RewriteCond o un RewriteRule no recuerrdo cual ... donde se especificaba que la regla del rewrite solo se cumplia si existia el archivo.

Si alguien me pudiera ayudar con una solucion con cualquiera de estos dos metodos estaria muy agradecido.

Gracias !
  #2 (permalink)  
Antiguo 18/01/2010, 16:15
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Generar error 404 PHP

Por que no lo haces desde php???

cuando haces el require, ANTES, verifica si existe el fichero (file_exists) si no existe, mandas un header con las cabeceras 404 y listo
  #3 (permalink)  
Antiguo 18/01/2010, 16:36
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Generar error 404 PHP

Cita:
Iniciado por DooBie Ver Mensaje
Por que no lo haces desde php???

cuando haces el require, ANTES, verifica si existe el fichero (file_exists) si no existe, mandas un header con las cabeceras 404 y listo
Pues actualmente lo tengo algo asi:

Código HTML:
        $mod_file = $_GET['mod'];
	if( !file_exists($mod_file) )
	{
		header("HTTP/1.0 404 Not Found", true, 404); 
		exit;
	}
Pero la pagina me queda en blaco, no me muestra ningun error.
  #4 (permalink)  
Antiguo 18/01/2010, 16:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Generar error 404 PHP

Cita:
Iniciado por mleonardom Ver Mensaje
[...] Pero la pagina me queda en blaco, no me muestra ningun error.
pues es obvio, ya que lo envías un header() indicando que se trata de una respuesta de error 404...

pero eso no quiere decir que te debe salir un mensaje, eso lo debes imprimir tu...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/01/2010, 16:51
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Generar error 404 PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
pues es obvio, ya que lo envías un header() indicando que se trata de una respuesta de error 404...

pero eso no quiere decir que te debe salir un mensaje, eso lo debes imprimir tu...
mmmmmmmm.

Si, con eso lanzo el 404 como respuesta, pero lo que realmente necesito es se muestre el error 404 de cualqueir servidor, es decir: tengo el aplicativo funcionando en un servidor de pruebas, luego hay que subirlo a uno de produccion, y al parecer, luego se va a hacer una migracion de servidor, ademas este aplicativo comparte muchas cosas con otros aplicativos, en ese orden de ideas, necesito que quien lance la notificacion del error 404 sea apache, ya sea por su 404.html o cualquier otro archivo con el que este configurado para esto, y no que se muestre una pagina con el error hecha por mi, ya que puede diferir la que yo haga con la notificacion con la que lance apache.

Tal vez suene un poco caprichoso esto (y en realidad lo es) pero no es capricho mio, sino del cliente

Gracias
  #6 (permalink)  
Antiguo 18/01/2010, 16:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Generar error 404 PHP

bueno, pero no tiene sentido lo que dices...

osea, tu estas enviando un error 404 por cuestiones artificiales, de modo que ya no compete como error de Apache... he ahí la gran incongruencia de tu cuestión...

puesto a que es un error derivado de tu aplicación en PHP, debe competer a dicha aplicación informar al respecto...

Cita:
mmmmmmmm.
creeme que si tu cliente no sabe o no entiende esto, veo muy difícil que tu puedas resolver a su antojo... osea, no hay forma de invocar con PHP un error que no existe si quiera para Apache...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 19/01/2010, 07:53
mleonardom
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Generar error 404 PHP

LISTO !!!!!!!!!

He encontrado la solucion, con una sencilla condicion en el .htaccess, el cual quedo de la siguiente forma:

Código HTML:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -F
RewriteRule ^(.*)\.(html|htm|php)$ index2.php?module=$1.$2 [QSA]
El RewriteCond %{REQUEST_FILENAME} -F lo que hece es que primero verifica si el archivo existe y es accesible vía URL solo asi, se aplicaria la regla de reescritura de la URL.

Respecto a lo que dices pateketrueke si tienes razon en lo que dices (en cierta forma) pero lo del cliente no es solo un antojo sin sentido, solo que este aplicativo (que mas que un aplicativo es una especie de extencion para sitios web ya hechos) se va a aplicar a varios sitios cada uno con un 404 personalizado diferente, además tienes toda la razon en eso de que apache no puede enviar un error que compete a PHP, al parecer no me hice entender bien, no queria lanzar el error 404 con php (lo estaba haciendo, pero como tu dices artificialmente) sino forzar un 404 en apache desde php.

Etiquetas: Ninguno
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 15:13.