【发布时间】:2015-04-07 02:04:47
【问题描述】:
我正在使用 laravel 4.2 开发一个网站,并且我使用了自定义 404 页面来显示“找不到页面”。一切正常,但如果找不到任何资产,例如图像或 js 文件,Chrome 控制台会显示整个 404 页面。对于每个丢失的资产,都会加载整个 404 页面,这非常繁重且不需要。
我可以做些什么来返回一个关于未找到资产的简单消息而不是整个 404 页面?
【问题讨论】:
标签: php html laravel laravel-4
我正在使用 laravel 4.2 开发一个网站,并且我使用了自定义 404 页面来显示“找不到页面”。一切正常,但如果找不到任何资产,例如图像或 js 文件,Chrome 控制台会显示整个 404 页面。对于每个丢失的资产,都会加载整个 404 页面,这非常繁重且不需要。
我可以做些什么来返回一个关于未找到资产的简单消息而不是整个 404 页面?
【问题讨论】:
标签: php html laravel laravel-4
你的公共文件夹中的.htaccess 被配置为让 Laravel 处理所有不是文件或目录的东西。为public 的子目录(例如public/css)更改它的一种简单方法是在此目录中放置一个.htaccess 文件并禁用Larvel 对该文件夹的路由:
public/css/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
然后,当您尝试访问不存在的文件时,您将获得网络服务器的默认 Not found 页面。
旁注:当然,您也可以使用 Laravel 和一些程序逻辑来完成此操作,但这似乎是最干净的方法,因为它甚至不启动 Laravel,从而节省了响应时间和服务器资源。
此外,您可能应该尽最大努力只请求实际存在的文件以避免 404。
【讨论】:
我找到了解决方案。以下 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;
}
【讨论】: