我正在使用laravel 4.2开发一个网站,我使用自定义404页面来显示“找不到页面”。一切正常,但如果有任何未找到的资产,如图像或js文件,Chrome控制台会向我显示整个404页面。对于每个缺失的资产,加载整个404页面非常繁重而且不是必需的。
如何为未找到的资产而不是整个404页面返回简单消息,该怎么办?
答案 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;
}