solucionar soluciona solucion smart significa que problema pagina page not found error cómo como php header http-status-code-404

php - smart - ¿cómo se soluciona el error 404?



¿Por qué mi aplicación PHP no enviará un error 404? (16)

Cargue la página predeterminada del servidor 404, si tiene una, por ejemplo, definida para apache:

if(strstr($_SERVER[''REQUEST_URI''],''index.php'')){ header(''HTTP/1.0 404 Not Found''); readfile(''404missing.html''); exit(); }

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



Llegué a este problema ... ¡Creo que redirigir a un enlace no existente en tu servidor podría ser el truco! Porque el servidor devolvería su 404:
header(''Redirect abbb.404.nonexist''); <eso no existe para seguro


Lo estás haciendo bien, aunque podría usar algo de refinación. 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 if if:

if (<no file found>){ die("NO FILE HERE"); }

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, la integridad) para verificar los enlaces incorrectos y los documentos faltantes. Esto significa que obtuvimos una respuesta 200 correcta, sin errores, que nos indicó que había un archivo allí. Integrity no sabía que esperábamos un PDF, por lo que tuvimos que agregar manualmente un encabezado 404 con php. Al agregar su código encima del dado (porque nada después se ejecutaría y el encabezado debería estar siempre antes de cualquier html renderizado), la integridad (que se comporta más o menos como un navegador) devolvería un 404 y sabríamos exactamente dónde buscarlo. archivos. Hay formas más elegantes de decirle al usuario que hay un error, pero al mostrar un error 404 no solo está notificando los navegadores y los programas tipo navegador del error, sino que (creo, me corrigen si estoy equivocado) también grabando esos errores en los registros de su servidor donde puede grep fácilmente para 404s.

header(''HTTP/1.0 404 Not Found''); die("NO FILE HERE");


Otra solución, basada en @ Kitet''s.

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); header("Status: 404 Not Found"); $_SERVER[''REDIRECT_STATUS''] = 404; //If you don''t know which web page is in use, use any page that doesn''t exists $handle = curl_init(''http://''. $_SERVER["HTTP_HOST"] .''/404missing.html''); curl_exec($handle);

Si está programando un sitio web alojado en un servidor que no tiene control, no sabrá qué archivo es el "404missing.html". Sin embargo, todavía puedes hacer esto.

De esta forma, 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.


Para el registro, este es el controlador de todas las cajas:

<?php header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); header("Status: 404 Not Found"); $_SERVER[''REDIRECT_STATUS''] = 404; ?> <!-- 404 contents below this line -->


Prueba esto:

if (strstr($_SERVER[''REQUEST_URI''],''index.php'')) { header(''HTTP/1.0 404 Not Found''); echo "<head><title>404 Not Found</title></head>"; echo "<h1>Not Found</h1>"; $uri = rtrim(dirname($_SERVER[''PHP_SELF'']), ''///'); echo "<p>The requested URL ".$uri." was not found on this server.</p>"; exit(); }


Si desea mostrar la página 404 predeterminada del servidor, puede cargarla en un marco como este:

echo ''<iframe src="/something-bogus" width="100%" height="100%" frameBorder="0" border="0" scrolling="no"></iframe>'';


Si desea que se muestre la página de error predeterminada del servidor, debe manejar esto en el servidor.


Tu código es técnicamente correcto. Si miraba los encabezados de esa página en blanco, vería un encabezado 404, y otras computadoras / programas podrían identificar correctamente la respuesta como un archivo no encontrado.

Por supuesto, tus usuarios siguen siendo SOL. Normalmente, los 404 son manejados por el servidor web.

  • Usuario: Oye, ¿tienes algo para mí en este servidor web de URI?
  • Servidor web: ¡No, no, 404! Aquí hay una página para mostrar para 404s.

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

  • Usuario: Oye, ¿tienes algo para mí en este servidor web de URI?
  • Servidor web: Sí, lo hago, es una página PHP. Te dirá cuál es el código de respuesta
  • PHP: ¡Hola, OMG 404 !!!!!!!
  • Servidor web: Bien, la gente de la página 404 ya se ha ido a casa, así que enviaré lo que PHP me dio

Además de proporcionar un encabezado 404, PHP ahora es responsable de generar la página 404 real.


Una versión un poco más corta. Suprime el eco impar.

if (strstr($_SERVER[''REQUEST_URI''],''index.php'')){ header(''HTTP/1.0 404 Not Found''); exit("<h1>404 Not Found</h1>/nThe page that you have requested could not be found."); }


Ya sabes, en mi sitio web creé algo como esto:

$uri=$_SERVER[''REQUEST_URI'']; $strpos=strpos($uri, ''.php''); if ($strpos!==false){ $e404="The page requested by you: &quot".$_SERVER[''REQUEST_URI'']."&quot, doesn''t exists on this server."; $maybe=str_replace(''.php'','''',$uri); $maybe=str_replace(''/'','''',$maybe); die("<center><h1>404</h1><hr><h3>$e404</h3><h3>Maybe try <a href=$maybe>www.leaveyortexthere.p.ht/$maybe</a>?</center>"); }

Espero que te ayude.


prueba con:

header("Status: 404 Not Found"); header(''HTTP/1.0 404 Not Found'');

¡Adiós!


Ese es el comportamiento correcto , depende de usted crear los contenidos para la página 404.
El encabezado 404 es utilizado por arañas y gestores 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.


if (strstr($_SERVER[''REQUEST_URI''],''index.php'')){ header(''HTTP/1.0 404 Not Found''); echo "<h1>404 Not Found</h1>"; echo "The page that you have requested could not be found."; exit(); }

Si miras las dos últimas líneas de eco, allí es donde verás el contenido. Puede personalizarlo como lo desee.


if($_SERVER[''PHP_SELF''] == ''/index.php''){ header(''HTTP/1.0 404 Not Found''); echo "<h1>404 Not Found</h1>"; echo "The page that you have requested could not be found."; die; }

nunca simplifique las declaraciones de eco, y nunca olvide el punto y coma anterior, también por qué ejecutar un substr en la página, simplemente podemos ejecutar php_self