【发布时间】:2014-06-12 13:30:47
【问题描述】:
在 Laravel 4.1 中,如果页面不存在,我想将用户重定向到我自定义的 404 页面。这很容易,因为我已经有了这个:
App::missing(function($exception)
{
return Redirect::to('error404', 303)->with(array('error' => array('url' => Request::url())));
}
但问题是,如果页面上缺少任何链接文件(图像、js、css 等),我不会收到该文件的 404 错误,但这会显示在控制台上:
Resource interpreted as Image but transferred with MIME type text/html: "...
所以问题是:如何仅在页面丢失时删除 404 并为其余页面(图像、其他文件等)保留默认错误处理?
提前致谢!
【问题讨论】:
-
也许如果你传递
404作为状态码,这意味着页面没有找到,而不是303,这意味着你正在重定向,浏览器可能会理解并正常工作。 -
没有。它必须是 303,因为它是重定向。如果我将其更改为 404,它会抛出:“异常处理程序中的错误:HTTP 状态代码不是重定向(给出“404”)。”
-
它应该真的返回 404,不是吗?既然是这样?也许像在
error404路由中那样在App::missing内创建视图并返回 404 是正确的选择。 -
没有。仅当缺少任何内容但不是网页时,我才想要 404 错误。如果页面丢失,它应该重定向到自定义错误页面(当前所做的)。
-
您可以显示自定义错误页面并发送 404 状态码。这可能会给你同样的结果。