php - solucionar - error 404 solucion
¿Cómo agregar un código de error 404 cuando la ruta no existe? (3)
¿Cómo puedo arrojar un código de error 404 cuando una ruta no existe?
En phalcon después de configurar su información de enrutamiento, ¿hay alguna manera de verificar si una ruta entrante (del usuario) coincide con alguna de las rutas en su lista de rutas? Entonces, si la ruta no existe, lanza un error 404.
Puedes usar algo como esto:
public function main()
{
try {
$this->_registerServices();
$this->registerModules(self::$modules);
$this->handle()->send();
} catch (Exception $e) {
// TODO log exception
// remove view contents from buffer
ob_clean();
$errorCode = 500;
$errorView = ''errors/500_error.phtml'';
switch (true) {
// 401 UNAUTHORIZED
case $e->getCode() == 401:
$errorCode = 401;
$errorView = ''errors/401_unathorized.phtml'';
break;
// 403 FORBIDDEN
case $e->getCode() == 403:
$errorCode = 403;
$errorView = ''errors/403_forbidden.phtml'';
break;
// 404 NOT FOUND
case $e->getCode() == 404:
case ($e instanceof Phalcon/Mvc/View/Exception):
case ($e instanceof Phalcon/Mvc/Dispatcher/Exception):
$errorCode = 404;
$errorView = ''errors/404_not_found.phtml'';
break;
}
// Get error view contents. Since we are including the view
// file here you can use PHP and local vars inside the error view.
ob_start();
include_once $errorView;
$contents = ob_get_contents();
ob_end_clean();
// send view to header
$response = $this->getDI()->getShared(''response'');
$response->resetHeaders()
->setStatusCode($errorCode, null)
->setContent($contents)
->send();
}
}
Si está utilizando el componente Micro , puede usar esto:
$app->notFound(
function () use ($app) {
$app->response->setStatusCode(404, "Not Found")->sendHeaders();
echo ''This is crazy, but this page was not found!'';
}
);
Por supuesto, puede utilizar las sugerencias que otros publicaron con respecto al archivo .htaccess, pero arriba es cómo lo hace en Phalcon sin tocar nada más.
También hay una nueva característica en la tubería, con respecto a un manejador de error predeterminado que procesaría los errores en Phalcon (o anulado si es necesario).
Créditos a Nesbert por la esencia
Si desea utilizar el error HTTP 404 predeterminado al ejecutar un script PHP:
header("HTTP/1.0 404 Not Found");
Pero recuerde que esto debe ser lo primero que envíe al cliente.
Si quiere personalizar el error PHP predeterminado de su servidor web, eso depende del software. Es fácil encontrar que el filtro apache utiliza, por ejemplo, para mostrar este tipo de error.
Una vez que tenga la configuración de la página 404, todo lo que necesita hacer es enviar visitantes a direcciones URL incorrectas a esta página. Para hacer esto simplemente agregue la siguiente línea a su archivo .htaccess:
ErrorDocument 404 /404.php
Puede colocar la plantilla de error 404 en cualquier lugar que desee. Por ejemplo, podría colocar todos los mensajes de error en una carpeta llamada errormessages
ErrorDocument 404 /errormessages/404.php