soluciona - ¿Cómo puedo crear un error 404 en PHP?
php set response code (7)
¿Recordó morir () después de enviar el encabezado? El encabezado 404 no detiene automáticamente el procesamiento, por lo que puede parecer que no ha hecho nada si se está procesando.
No es bueno redirigir a su página 404, pero puede INCLUIR el contenido sin problemas. De esta forma, tiene una página que envía correctamente un estado 404 desde la URL correcta, pero también tiene su "¿qué está buscando?" página para el lector humano.
My .htaccess redirige todas las solicitudes a /word_here
a /page.php?name=word_here
. El script PHP luego verifica si la página solicitada se encuentra en su conjunto de páginas.
Si no, ¿cómo puedo simular un error 404? Intenté esto, pero no resultó en mi página 404 configurada a través de ErrorDocument
en el .htaccess
que aparece.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
¿Estoy en lo cierto al pensar que es incorrecto redirigir a mi página de error 404?
Inmediatamente después de esa línea, intente cerrar la respuesta usando exit
o die()
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
exit;
o
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();
La respuesta actualizada (a partir de PHP 5.4 o posterior) para generar páginas 404 es usar http_response_code
:
<?php
http_response_code(404);
include(''my_404.php''); // provide your own HTML for the error page
die();
die()
no es estrictamente necesario, pero se asegura de que no continúe la ejecución normal.
Lo que está haciendo funcionará, y el navegador recibirá un código 404. Lo que no hará es mostrar la página "no encontrada" que podría estar esperando, por ejemplo:
Extraviado
La URL solicitada /test.php no se encontró en este servidor.
Esto se debe a que el servidor web no envía esa página cuando PHP devuelve un código 404 (al menos Apache no lo hace). PHP es responsable de enviar toda su propia salida. Entonces, si quieres una página similar, tendrás que enviar el HTML tú mismo, por ejemplo:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
Puede configurar Apache para usar la misma página para sus propios mensajes 404, poniéndolo en httpd.conf:
ErrorDocument 404 /notFound.php
Prueba esto:
<?php
header("HTTP/1.0 404 Not Found");
?>
intenta poner
ErrorDocument 404 /(root directory)/(error file)
en el archivo .htaccess
.
Haga esto por cualquier error pero sustituya 404 por su error.
Crear páginas de error personalizadas a través del archivo .htaccess
1. 404 - página no encontrada
RewriteEngine On
ErrorDocument 404 /404.html
2. 500 - Error interno del servidor
RewriteEngine On
ErrorDocument 500 /500.html
3. 403 - Prohibido
RewriteEngine On
ErrorDocument 403 /403.html
4. 400 - Mala solicitud
RewriteEngine On
ErrorDocument 400 /400.html
5. 401 - Se requiere autorización
RewriteEngine On
ErrorDocument 401 /401.html
También puede redirigir todos los errores a una sola página. me gusta
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html