En algunas veces cuando realizamos una solicitud a un servidor web (http) resulta que sucede un error, cuando sucede dicho evento de error lo que hacen los servidores web (p.e. demonio apache) es muestrar una salida de error, por ejemplo el mas clásico error 404 page no found! lo ideal es tratar de reducir a mayor medida los errores en nuestro servidor sin embargo muchos errores son inevitables(como el 404) , en estas ocaciones la mejor solución(según mi opinión) es la de; tratar el error como una excepción veamos como hacer esto, asumiendo que estamos trabajando en un servidor Apache con soporte PHP.
Errores a implementar:
Errores de cliente
HTTP 400
Solicitud mala. Ocurre generalmente cuando se escriben errores de sintaxis en una petición web (en la dirección del navegador). Si se obtiene un error 400, es necesario revisar que todos los caracteres están escritos correctamente.
HTTP 401
Sin autorización. Ocurre cuando se intenta entrar a un directorio que requiera autenticación, y no se introduzca la contraseña±a correcta. También ocurre cuando ese directorio ha negado explícitamente el permiso para entrar a nuestra dirección IP (se le conoce como banning).
HTTP 402
Requiere de pago. Similar al error 401, pero se usa para especificar que para poder autenticarse es necesario realizar un pago al propietario del servidor.
HTTP 403
Prohibido. Ocurre cuando se hace alguna petición HTTP que no está permitida en un sitio, como por ejemplo listar directorios en algunos sistemas.
HTTP 404
No encontrado. La dirección que usted introdujo no existe en el servidor web. En esos casos es importante comunicarlo a la persona responsable de la página, o revisar por ejemplo si se escribiá “.htm” en vez de “.html” (o viceversa).
HTTP 407
Se requiere autenticación del proxy. En muchas empresas, hay páginas que sálo deben de ser vistas por personal interno de la compañía. Para ello, se establecen servidores conocidos como “proxies”, los cuales administran todas las transacciones entre los usuarios autorizados y TODAS las páginas. Sin embargo, se puede hacer que una página simplemente no permita desplegar la información si no es un usuario autenticado a través de este servidor.
HTTP 415
Tipo de medio no soportado. Ocurre generalmente cuando se intenta hacer una petición de servicio administrada por el servidor, y el cliente no cuenta con los medios. Un caso típico es el tratar de ver un archivo Flash en el explorador, cuando este en realidad no tiene.
Errores de servidor
HTTP 500
Error Interno del Servidor. Cuando se obtiene este error, significa que el “script” que se estaba ejecutando (generalmente es un archivo .cgi, .asp, .php, .cfm, etc.) tuvo un error. Hay lenguajes que además del error 500 envían una explicación del error (como PHP), pero otros simplemente envían el error. Cuando esto ocurre, no existe nada que el usuario pueda hacer. El error tiene que ser corregido por el administrador del sitio.
HTTP 501
No implementado. Significa que el servidor no entiende la petición o la instrucción que el cliente la ha hecho. En la mayoría de los casos, ocurre que el administrador explícitamente ha denegado el uso de determinado servicio en el servidor.
HTTP 502
Gateway incorrecto. Un gateway es un enlace de datos entre el cliente y el servidor, que usualmente se usar para pasar variables de las formas, subir imágenes y archivos, etc. Existen 2 formas de pasar datos: una enviándola a través de la petición web (mejor conocida como GET), y otra enviándola a través de un gateway (conocida como POST). Si este gateway no es correctamente configurado, o es demasiado grande, o trata de ejecutar una función prohibida, se desplegará este error.
HTTP 503
Servicio no disponible. Relacionado con el error anterior. Este error se refiere particularmente al hecho de que el método POST no está permitido en el servidor, y algún formulario lo utilice. Si usted es el creador de la forma, utilice el método GET en la medida de lo posible o contacte a su administrador del servidor para que active el servicio de gateway. Si usted es un usuario, comunique al creador del sitio de este problema.
fuente: http://www.webpymes.cl/?cat=42
Ahora para implementar los errores utilizaremos una directiva definida por Apache la cual se deberá poner en el archivo .htaccess.
Mas info configuración .htaccess : http://httpd.apache.org/docs/1.3/howto/htaccess.html
Configurando el archivo .htaccess :
ErrorDocument 401 /error.php?errno=401
ErrorDocument 402 /error.php?errno=402
ErrorDocument 403 /error.php?errno=403
ErrorDocument 404 /error.php?errno=404
ErrorDocument 407 /error.php?errno=407
ErrorDocument 415 /error.php?errno=415
ErrorDocument 500 /error.php?errno=500
ErrorDocument 501 /error.php?errno=501
ErrorDocument 502 /error.php?errno=502
ErrorDocument 503 /error.php?errno=503
Como podemos ver todos van direccionamiento hacia el archivo error.php y lo único que cambiamos es el parámetro de error denominado como errno.
Veamos como quedaría:
Creando el archivo error.php
<?php
if(!isset($_GET["errno"])){
header(“Location: http://localhost”);
exit;
}
?>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<title>..:: ERROR! ::..</title>
</head>
<body>
<?php
function accionError($type){
switch($type){
case “400″:
//acción error
break;
case “401″:
//acción error
break;
case “402″:
//acción error
break;
case “403″:
//acción error
break;
case “404″:
//acción error
break;
case “407″:
//acción error
break;
case “415″:
//acción error
break;
case “500″:
//acción error
break;
case “501″:
//acción error
break;
case “502″:
//acción error
break;
case “503″:
//acción error
}
echo “Error:”.$type;
}
$datos = array( “400″=>”Solicitud mala.”,
“401″=>”Sin autorización. “,
“402″=>”Sin autorización Requiere de pago. “,
“403″=>”Zona prohibida.”,
“404″=>”Página no encontrada.”,
“407″=>”Se requiere autenticación del proxy.”,
“415″=>”Tipo de medio no soportado.”,
“500″=>”Error Interno del Servidor.”,
“501″=>”Servicio no implementado”,
“502″=>”Gateway incorrecto”,
“503″=>”Servicio no disponible”
);
$sal = accionError($_GET['errno']).”</h3>”.$datos[$_GET['errno']];
echo “<h3>”.$sal;
echo “http://localhost/”.
$_SERVER['REQUEST_URI'];
?>
</body>
</html>
Por ultimo dejo el Script comprimido espero sea de utilidad:
http://www.mundosica.com/descargas/scripts/errorHttp.zip