Mi .htaccess redirige todas las solicitudes /word_here
a /page.php?name=word_here
. El script PHP luego verifica si la página solicitada está en su conjunto de páginas.
Si no es así, ¿cómo puedo simular un error 404? Intenté esto, pero no resultó en mi página 404 configurada a través ErrorDocument
de la .htaccess
presentación.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
¿Tengo razón al pensar que está mal redirigir a mi página de error 404?
Respuestas:
La respuesta actualizada (a partir de PHP 5.4 o posterior) para generar páginas 404 es usar
http_response_code
:die()
no es estrictamente necesario, pero se asegura de que no continúe con la ejecución normal.fuente
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.
Eso es porque 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 desea una página similar, deberá enviar el HTML usted mismo, por ejemplo:
Puede configurar Apache para usar la misma página para sus propios mensajes 404, colocando esto en httpd.conf:
fuente
Prueba esto:
fuente
Cree páginas de error personalizadas a través del archivo .htaccess
1. 404 - página no encontrada
2. 500 - Error interno del servidor
3. 403 - Prohibido
4. 400 - Solicitud incorrecta
5. 401 - Se requiere autorización
También puede redirigir todos los errores a una sola página. me gusta
fuente
¿Recuerdas 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 más.
No es bueno REDIRECCIONAR a su página 404, pero puede INCLUIR el contenido sin problemas. De esa manera, 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.
fuente
intenta poner
en
.htaccess
archivo.Haga esto por cualquier error, pero sustituya 404 por su error.
fuente
En el CMS de Drupal o Wordpress (y probablemente en otros), si está intentando hacer que algún código PHP personalizado parezca no existir (a menos que se cumpla alguna condición), lo siguiente funciona bien al hacer que el controlador 404 del CMS se haga cargo:
fuente
Inmediatamente después de esa línea, intente cerrar la respuesta usando
exit
odie()
o
fuente
ErrorDocument
, pero desde PHP.ErrorDocument
no tiene ningún efecto después de haber ingresado el código PHP. esta respuesta explica mejor la confusión que enfrenté hace 9 años$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
en su archivo page.php. Porque hay un escenario en el que una de esas páginas espera un "nombre" de consulta del usuario.intente esto una vez.
fuente