【问题标题】:laravel 404 error returning entire page for missing imageslaravel 404 错误返回整个页面以丢失图像
【发布时间】:2015-04-07 02:04:47
【问题描述】:

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

我可以做些什么来返回一个关于未找到资产的简单消息而不是整个 404 页面?

【问题讨论】:

    标签: php html laravel laravel-4


    【解决方案1】:

    你的公共文件夹中的.htaccess 被配置为让 Laravel 处理所有不是文件或目录的东西。为public 的子目录(例如public/css)更改它的一种简单方法是在此目录中放置一个.htaccess 文件并禁用Larvel 对该文件夹的路由:

    public/css/.htaccess

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

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

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

    此外,您可能应该尽最大努力只请求实际存在的文件以避免 404。

    【讨论】:

    • 我如何在 nginx 中使用它?
    • 嗯,我不知道。我对nginx没有太多经验。如果我发现了什么,我会做一些挖掘和更新......
    • 能否用您的 nginx 配置更新问题?
    【解决方案2】:

    我找到了解决方案。以下 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      相关资源
      最近更新 更多