laravel 404错误返回整个页面以查找丢失的图像

时间:2015-02-06 20:20:30

标签: php html laravel laravel-4

我正在使用laravel 4.2开发一个网站,我使用自定义404页面来显示“找不到页面”。一切正常,但如果有任何未找到的资产,如图像或js文件,Chrome控制台会向我显示整个404页面。对于每个缺失的资产,加载整个404页面非常繁重而且不是必需的。

如何为未找到的资产而不是整个404页面返回简单消息,该怎么办?

2 个答案:

答案 0 :(得分:2)

公用文件夹中的.htaccess配置为让Laravel处理非文件或目录的所有内容。更改public子目录(例如public/css)的简单方法是将.htaccess文件放在此目录中,并禁用Larvel对该文件夹的路由:

public/css/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine Off
</IfModule>

然后,当您尝试访问不存在的文件时,您将获得网络服务器的默认未找到页面。

旁注:当然你也可以使用Laravel和一些程序逻辑来实现这一点,但这似乎是最干净的方法,因为它甚至没有启动Laravel,从而节省了响应时间和服务器资源。

此外,您应该尽力只请求实际存在的文件以避免使用404.

答案 1 :(得分:0)

我找到了解决方案。以下nginx设置工作并显示未找到文件的nginx 404和找不到url的自定义页面。

rewrite_log on;
try_files $uri $uri/ @rewrite; 
location @rewrite {
    rewrite ^/(.*)$ /index.php?_url=/$1;
}       
error_page  404              /404.html;
location = /404.html {
    root   /usr/share/nginx/html;
}