Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Enviar error 404 de página no encontrada y luego redirigir con header location no funciona

Tengo un problema al enviar un error de página no encontrada, error 404.

Esto lo hago para las URLs que se procesan con htaccess con mod_rewrite. Pues puede haber páginas que htacces procese como que existen, pero que luego no existan en el sitio web. Espero que me explique. Por ejemplo, tengo esta página que no existe:

http://www.dominio.com/reportajes/loquesea_quenoexiste.html

Ese artículo no existe, entonces lo trato así:

header("HTTP/1.0 404 Not Found");
header ("location: /muestra_error.php");

Primero lanzo un error 404 con PHP en las cabeceras del http.
Luego redirecciono a una página que muestra el error.

Pero no me funciona correctamente, porque en realidad lo que estoy enviando por las cabeceras es un 302 Moved Temporarily.

La FAQ Enviar error 404 de página no encontrada y luego redirigir con header location no funciona tiene Pertenece a la categoría:


 Respuesta de Miguel Angel Alvarez  01/8/07 
El problema de esto es que en realidad lo que se genera y se envía al navegador en las cabeceras del http es un estado de “movido temporalmente” (HTTP/1.x 302 OK) y no un código de error 404 de “página no encontrada”.

Esto pasa porque el header ("location: /error.php?cod=3"); sobrescribe el error 404 que se ha enviado anteriormente.

Por tanto, quiere decir que en realidad no estás enviando el error correctamente. El problema de esto no es por los visitantes del sitio, que van a ver que efectivamente no se ha podido encontrar el contenido que buscaban. El problema es para buscadores, que entenderán que una página que, en realidad no existe, ha sido movida temporalmente a una nueva URL. Así parece que tenemos URLs que en realidad no existen.

La manera de arreglarlo es no hacer la redirección header ("location: …"); después de generar el código de error 404.

Para ello simplemente puedes escribir en la página directamente la descripción del error. Si el código que describe un error lo tienes en otra página, pues simplemente incluye ese fichero con un include de PHP.

header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
include ("error.php");

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
 
FAQ relacionadas
  + Utilizar PHP en IIS en Windows XP
  + Dónde aprender PHP
  + Implementar una capa de autentificación con PHP
  + Qué elegir ASP o PHP
  + Con qué tecnología programo una página
  + Porque no recibo el código PHP o ASP de las páginas?
  + Inhibir la presentación de errores en PHP
  + Lo necesario para empezar a programar en PHP y ASP
  + Hacer gráficas de líneas con datos recogidos de una base
  + Función en PHP análoga al redirect de ASP.
  + Sistema de seguridad por usuario y contraseña en PHP
  + ¿Cómo puedo insertar una función EDIT y BORRAR?
  + ¿Cómo puedo implementar música en un sistema de envío de postales?
  + Tengo un problema a la hora de implementar un scroll.
  + Comparar cadenas sin importar mayúsculas ni acentos
  + Las sentencias SQL que lanzo desde PHP no actualizan la base de datos
  + Flash no carga en PHP
  + Extensión phtml
  + Empezar a programar
  + Caracteres en PHP
  + Problema con Paginator
  + Qué es htaccess
  + Separar código HTML y PHP
  + Imágenes dinámicas con PHP
  + Web Service con PHP
  + PHP 5
  + El http.conf
  + Cómo empezar con PHP 5
  + METAS en PHP
  + Problema con enlaces
  + Webs iguales con urls distintas
  + Expresiones regulares
  + PHP 5
  + Comprobar si una variable es un array en PHP
  + Headers already sent error
  + Actualizar navegador sin ejecutar POST
  + Bloquear el botón volver
  + Puntos decimales
  + Array en PHP
  + Libreria GD
  + ...

Para ver más FAQ relacionadas accede a las categorías:

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia