
Una de las maneras de obtener información del servidor donde tenemos alojada nuestra web es solicitando una pagina que no exista y así nos devuelva la pagina
que tiene el servidor por defecto de pagina no encontrada en la cual suele venir el modelo versión y demás detalles. Una solución rápida para esto es crear
nuestra pagina de error 404. Para ello tendremos que editar el fichero .htaccess en la raíz de nuestra pagina web y poner lo siguiente:
Nota: Consideramos que el servidor web es apache
ErrorDocument 404 /404.php
Con esto le estamos diciendo que cuando se produzca un error 404 nos muestre la pagina 404.php
Dicha pagina la podemos poner como queramos y el mensaje que queramos.
Otra opción que tenemos, por si no queremos hacer una pagina de error es pasarle directamente el mensaje a la configuración
ErrorDocument 404 "Lo sentimos la pagina web solicitada no existe"
Lo mismo que con el 404 ( pagina no encontrada ) lo podemos hacer con otros codigos como el 403 y demás.
Ahora bien, hay un caso, que tenemos que tener cuidado, pongamos que hacemos la típica aplicación en la cual tenemos que estar registrados para acceder a las secciones y queremos evitar
que nos accedan directamente a las paginas. La programación de la cabecera de los ficheros podría ser
if ( session_id != null ) { session_regenerate_id(); } else { session_start(); } if (!$_SESSION['auth']) { // Redirección a la pagina header("Location:404.php"); // Redirigimos a la pagina de error o a la que queramos exit(0); }
Imaginemos que queremos crear una función para no tener que escribir todo esto en cada cabecera, y lanzamos esa función en cada pagina, y pensamos que tenemos que cambiar la ruta del
header para cada sección. A la vez pensamos que hemos hecho la redirección 404 en el .htaccess como a continuacion:
header("HTTP/1.0 404 Not Found"); // Esta manera header("Status: 404 Not Found"); // O esta manera
Y decimos mira mando un header de 404, este me lo interpreta el .htaccess y me manda a la pagina
seleccionada… ERROR eso no funciona, y para colmo decir que no necesitaríamos hacer nada mas ya que esta funcionaria dentro de las carpetas, siempre y cuando no existiera la pagina 404.php, y si no ahí va un truco, que el header apunte a notfound.html, esta va a ser una pagina que no crearemos en ningún sitio, el header la llamara, como no existe hará que el .htaccess lance la pagina 404.php que tenemos en la raíz
+ Info
- http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
- RFC 2616 – Hypertext Transfer Protocol — HTTP/1.1
- Función header
Articulos Relacionados
- .htaccess tips (virendrachandak.wordpress.com)
- Dealing with 404 Pages (phoenixrealm.com)
- 404 Error Page Best Practices (virendrachandak.wordpress.com)
- What is the error 401 402 403 404 405 (wiki.answers.com)
- The Internet’s Best 404 Error Pages (gizmodo.com.au)
- 3 Ways to Turn Your 404 Error Page Into a Marketing Asset (hubspot.com)
I have updated the link mentioned in the post
old Link .htaccess tips (virendrachandak.wordpress.com) – http://virendrachandak.wordpress.com/2011/10/02/htaccess-tips/
New Link: http://techtalk.virendrachandak.com/htaccess-tips/
Thanks,
Virendra
I have updated the link mentioned in the post
old Link 404 Error Page Best Practices (virendrachandak.wordpress.com) – http://virendrachandak.wordpress.com/2011/11/20/404-error-page-best-practices/
New Link: http://techtalk.virendrachandak.com/404-error-page-best-practices/
Thanks,
Virendra