首页 > 解决方案 > NotFoundHttpException 仅适用于 CSS 和 JS 文件

问题描述

因此,就上下文而言,该应用程序是我们在主生产服务器上托管的我公司的门户。然后我们在不同的服务器上拥有开发者版本。完全相同的应用程序,但在不同的 VM 上并且具有不同的 url。这一切都是在我负责之前设置好的。现在我们要制作一个 alpha 服务器,因为 dev 服务器可以影响主数据库。因此,对于 alpha,我们需要让它与 dev 完全一样,但是一旦构建完成,将数据库复制到一个单独的数据库并断开它与主数据库的连接。

但现在的问题是设置它。我得到了 Apache2 设置和网站都放在一起。现在我遇到的问题是它显示了网站但没有运行任何 CSS 或 JS。laravel 日志显示了这一点:

[2019-02-20 11:33:51] local.ERROR:用户:测试路线: https://test/app/portal/final.css 文件:/var/www/laravel/bootstrap/cache/compiled.php线路:8335

类:Symfony\Component\HttpKernel\Exception\NotFoundHttpException

异常:/var/www/laravel/bootstrap/cache/compiled.php:8335 中的异常“Symfony\Component\HttpKernel\Exception\NotFoundHttpException”

js文件也出现了同样的错误,但我不想发布它,因为它是完全相同的错误。

我的网站现在的输出只是左侧标签栏中的一堆链接和文本。

我认为这是由于未安装某些内容或配置文件未正确读取所致。该站点的代码都是 git 提取的,因此与其他两台服务器的代码完全相同。唯一的区别是安装到实际服务器中的软件包。似乎由于某种原因没有加载 css 和 js 文件。我尝试了一堆其他线程并修复了没有运气。

PHP 版本是 PHP 5.6.40-1+ubuntu18.04.1+deb.sury.org+1 (cli) Apache2 用于服务器。作曲家版本 1.5.6 Laravel 5

感谢您的任何帮助。

阿帕奇配置:https ://drive.google.com/open?id=1im9voo0xqlyuf48gX-JJsRu00f0ym1UX

CSS 和 JS 文件分别位于 css 和 js 文件夹下的 public 文件夹中。

就像我说的,在已经安装的两台服务器上一切正常,此时文件系统和代码完全相同。唯一可以不同的是 apache、laravel 和 php。

标签: phplaravelcachingapache2

解决方案


三种可能...

阿帕奇根文件夹

首先,您的 apache 配置(或启用站点)中的文档根目录必须是该/public文件夹。在这种情况下,您的请求不会命中 .htaccess 并重定向到 index.php,您会收到错误的路由错误。所以这是一个不太可能的选择。

编译你的 .css 和 .js

您尚未在新服务器上使用 Webpack(或 gulp 或其他任何东西,如果您不使用 webpack)编译 .css 和 .js。在这种情况下,.htacess 会将请求发送到 index.php,Laravel 会寻找一个路由(这就是你的错误的样子),然后你会得到一个关于无效路由的错误。请注意,如果您使用 git 克隆项目,则 .css 和 .js 应该在其中.gitignore,这使得这很容易被忽略和发生。好消息是,如果设置了 node 和 npm 并且您使用 webpack,它应该只是:

npm run development

可悲的是,由于版本等原因,node、npm 和 webpack 的所有工作并不总是那么简单。

缺少或不读取 .htaccess

最后,您的 .htaccess 没有被读取或没有被复制,这意味着 / 路由会神奇地工作,但任何其他路由都不会......不过,在这种情况下,你的 .css 和 .js应该仍然有效 - 但不太可能。


推荐阅读