Páginas de error personalizadas

Generalidades

Este artículo explica cómo redirigir los errores del servidor a páginas de error personalizadas en tu sitio web.

Las páginas de error personalizadas te permiten personalizar las páginas que se muestran cuando se produce un error. Esto hace que tu sitio web parezca más profesional y también evita que los visitantes abandonen tu sitio.

Si un visitante ve una página de error genérica, es probable que abandone tu sitio. Sin embargo, si ven una página de error útil, es más probable que se queden porque simplemente pueden hacer clic en un enlace para ir a otra página dentro de tu sitio.

 

Apache

Las siguientes instrucciones son para un servidor Apache. Si tu servidor está corriendo Nginx, mira la sección de la parte inferior titulada Crear páginas de errores personalizadas con Nginx.

Errores 500 en un servidor Apache

No es posible redirigir a una página de error 500 personalizada debido a cómo están configurados los servidores DreamHost Apache. Cuando se encuentra un error 500, siempre se muestra la página 500 predeterminada del navegador.

Ejemplo simple

  1. Inicia sesión en tu servidor vía SSH.
  2. Navega a tu directorio del sitio web.
  3. Crear un archivo llamado .htaccess.
  4. Agrega la siguiente línea a tu archivo .htaccess de tu sitio web:
    ErrorDocument 404 /error.php
    

Esta sola línea redirige los navegadores que experimentan un error 404 (No encontrado) al archivo error.php localizado en el mismo directorio del archivo .htaccess de tu sitio web.

Puedes usar la línea anterior como plantilla para crear páginas de error personalizadas separadas para cada código de error.

Códigos de estado

L lista completa de errores está disponible aquí:

La lista de códigos de estado es muy larga, pero solo hay algunos errores comunes para los que probablemente quieras hacer entradas, que incluyen:

  • 400 – Bad Request
  • 401 – Unauthorized
  • 403 – Forbidden
  • 404 – Not Found

Por ejemplo, para detectar esos errores, agregarías lo siguiente a tu archivo .htaccess para el dominio que deseas configurar:

ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

Estas líneas fuerzan al buscador a redireccionar al archivo /error.php si este encuentra cualquiera de estos códigos de estado de arriba.

Ejemplo de un archivo error.php

El siguiente código es un ejemplo de que puedes agregar a un archivo error.php. Este ejemplo está escrito en PHP, pero puedes usar cualquier idioma que desees.

Luego puedes agregar estilos CSS a la página para que se mezcle con el resto de tu sitio web:

<?php

$page_redirected_from = $_SERVER['REQUEST_URI'];  // this is especially useful with error 404 to indicate the missing page.
$server_url = "http://" . $_SERVER["SERVER_NAME"];
$redirect_url = $_SERVER["REDIRECT_URL"];
$redirect_url_array = parse_url($redirect_url);
$end_of_path = strrchr($redirect_url_array["path"], "/");

switch(getenv("REDIRECT_STATUS"))
{
    # "400 - Bad Request"
    case 400:
    $error_code = "400 - Bad Request";
    $explanation = "The syntax of the URL submitted by your browser could not be understood. Please    verify the address and try again.";
    $redirect_to = "";
    break;

    # "401 - Unauthorized"
    case 401:
    $error_code = "401 - Unauthorized";
    $explanation = "This section requires a password or is otherwise protected. If you feel you have reached this page in error, please return to the login page and try again, or contact the webmaster if you continue to have problems.";
    $redirect_to = "";
    break;

    # "403 - Forbidden"
    case 403:
    $error_code = "403 - Forbidden";
    $explanation = "This section requires a password or is otherwise protected. If you feel you have reached this page in error, please return to the login page and try again, or contact the webmaster if you continue to have problems.";
    $redirect_to = "";
    break;

    # "404 - Not Found"
    case 404:
    $error_code = "404 - Not Found";
    $explanation = "The requested resource '" . $page_redirected_from . "' could not be found on this server. Please verify the address and try again.";
    $redirect_to = $server_url . $end_of_path;
    break;
}
?>

<!DOCTYPE html>
<head>
  <link rel="Shortcut Icon" href="/favicon.ico" type="image/x-icon" />
<?php
    if ($redirect_to != "")
    {
?>

<meta http-equiv="Refresh" content="5; url='<?php print($redirect_to); ?>'">
<?php
    }
?>
<title>Page not found: <?php print ($redirect_to); ?></title>

</head> <body> <h1>Error Code <?php print ($error_code); ?></h1> <p><?PHP echo($explanation); ?></p> <hr /> <p><i>A project of <a href="<?php print ($server_url); ?>"><?php print ($server_url); ?></a>.</i></p> </body> </html>

 

Nginx

Crear páginas de errores personalizadas con Nginx

Los siguientes pasos te guiarán a través de la creación de páginas de error personalizadas en un servidor Nginx.

Ten en cuenta que los archivos de configuración para los sitios de Nginx van a un directorio especial bajo tu usuario. Revisa el siguiente artículo para obtener más detalles sobre dónde colocar tu archivo de configuración:

  1. Inicia sesión en tu servidor vía SSH.
  2. Navega al siguiente directorio.

    Asegúrate de cambiar username a tu usuario y example.com a tu sitio web:

    [server]$ cd /home/username/nginx/example.com
  3. Crear un archivo llamado error.conf en este directorio con el siguiente código:
    error_page 404 /404.html;
    location  /404.html {
      internal;
    }
  4. Navega al directorio del sitio web. Por ejemplo:
    [server]$ cd ~/example.com
  5. Crea una página titulada 404.html con cualquier mensaje de error que desees mostrar.
  6. Reinicia tu servidor (si está en un VPS). Si está en un Dedicado, puedes recargar Nginx tu mismo.

Cuando visitas ahora una página en tu sitio que no existe, se muestra su página de error personalizada.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?