if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
¿Por qué no funciona esto? Me sale una página en blanco.
php
header
http-status-code-404
Danorton
fuente
fuente
Respuestas:
Su código es técnicamente correcto. Si miraras los encabezados de esa página en blanco, verías un encabezado 404, y otras computadoras / programas podrían identificar correctamente la respuesta como un archivo no encontrado.
Por supuesto, sus usuarios siguen siendo SOL. Normalmente, los 404 son manejados por el servidor web.
El problema es que, una vez que el servidor web comienza a procesar la página PHP, ya pasó el punto donde manejaría un 404
Además de proporcionar un encabezado 404, PHP ahora es responsable de generar la página 404 real.
fuente
Si miras las dos últimas líneas de eco, ahí es donde verás el contenido. Puedes personalizarlo como quieras.
fuente
Ese es el comportamiento correcto , depende de usted crear los contenidos para la página 404.
El encabezado 404 es utilizado por las arañas y los administradores de descargas para determinar si el archivo existe.
(Una página con un encabezado 404 no será indexada por Google u otros motores de búsqueda)
Sin embargo, los usuarios normales no miran los encabezados http y usan la página como una página normal.
fuente
Para el registro, este es el manejador de todos los casos:
fuente
die()
requiere?Cargue la página 404 del servidor predeterminado, si tiene una, por ejemplo, definida para apache:
fuente
Desde php 5.4 ahora puedes hacer
http_response_code(404);
fuente
Otra solución, basada en @ Kitet's.
Si está programando un sitio web alojado en un servidor que no tiene control, no sabrá qué archivo es el "404missing.html". Sin embargo, aún puedes hacer esto.
De esta manera, proporcionó exactamente el mismo resultado de una página 404 normal en el mismo servidor. Un observador no podrá distinguir entre una página PHP existente devuelve 404 y una página no existente.
fuente
probar con:
¡Adiós!
fuente
Una versión un poco más corta. Suprimir eco extraño.
fuente
nunca simplifique las declaraciones de eco, y nunca olvide el punto y coma como el anterior, también por qué ejecutar un substr en la página, podemos ejecutar fácilmente php_self
fuente
Si desea que se muestre la página de error predeterminada del servidor, debe manejar esto en el servidor.
fuente
Lo estás haciendo bien, aunque podría necesitar un poco de refinamiento. Parece que se ha abordado, así que hablemos de los beneficios prácticos de la aplicación:
Un antiguo sitio web nuestro que tiene una gran colección de documentos tecnológicos multilingües estaba ejecutando esto dentro de un condicional si no:
El problema (además del mensaje inútil y la mala experiencia del usuario) es que generalmente utilizamos un rastreador de enlaces (en nuestro caso, integridad) para verificar los enlaces malos y los documentos faltantes. Esto significa que estábamos obteniendo una respuesta 200 sin errores perfectamente correcta que nos decía que había un archivo allí. Integrity no sabía que estábamos esperando un PDF, así que tuvimos que agregar manualmente un encabezado 404 con php. Al agregar su código sobre el dado (porque nada se ejecutará después y el encabezado siempre debe estar antes de cualquier html procesado de todos modos), la integridad (que se comporta más o menos como un navegador) devolvería un 404 y sabríamos exactamente dónde buscar faltas archivos Hay formas más elegantes de decirle al usuario que hay un error,
fuente
Prueba esto:
fuente
Sabes, en mi sitio web creé algo como esto:
Espero que te ayude.
fuente
Llegué a este problema ... ¡Creo que redirigir a un enlace no existente en su servidor podría ser el truco! Debido a que el servidor devolvería su 404:
header('Redirect abbb.404.nonexist');
<que no existe con seguridadfuente
Si desea mostrar la página 404 predeterminada del servidor, puede cargarla en un marco como este:
fuente