codeigniter 中资产的 404/net::ERR_ABORTED 错误
Posted
技术标签:
【中文标题】codeigniter 中资产的 404/net::ERR_ABORTED 错误【英文标题】:404/net::ERR_ABORTED error for assets in codeigniter 【发布时间】:2018-06-06 11:48:03 【问题描述】:我正在浏览我的第一个 Codeigniter 网页,但遇到了一些特殊情况。首先是我不需要在我的 URL 前面使用 base_url 或 site_url 来让它们工作,至少最初不是。我设置了主页,并且简单地做了
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
这似乎会自动在其前面添加域名。我不确定它是如何工作的,但它适用于所有类似的 URL。当我查看检查窗口时,它显示为this。我不知道这是否相关,但我想记下它。
问题出现在我的第二页上。我添加了一个名为 Admin 的新控制器,并将其设置为显示不同的页面。我以与以前相同的方式设置 URL,但是当我加载它时,CSS 和 javascript 没有加载。万一这很重要,我尝试通过 Domainname.com/Admin 加载它。 html 加载正确,但是当我查看控制台时,它给了我一个 net::ERR_ABORTED and 404 errors 用于我的图像和文件。我已经仔细检查了所有这些,它们都在正确的位置。我找到了这个页面:404 page not found error in Codeigniter 并尝试在我的 .htaccess 文件中使用该解决方案。它不仅没有工作,而且现在正常工作的原始页面拒绝加载任何资产文件。我尝试删除新的代码行,但它仍然无法正常工作,即使一切都与以前完全相同。
这是我的 .htaccess 文件夹:
RewriteEngine On
RewriteBase /eventCentral/
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
#RewriteCond $1 !^(index\.php|assets)
RewriteRule ^ index.php [QSA,L]
我尝试完全删除注释的代码段,但仍然没有修复它。
我的文件结构也是正确的,可以看到here。
正如我所说,我对代码点火器仍然很陌生,所以如果答案可以分解为 Barney 风格,我将不胜感激。我还尝试查看了一些似乎相关的堆栈溢出问题,但我仍然没有找到可行的解决方案。
【问题讨论】:
确保你已经在 config,php 中设置了你的基本 url 并尝试href="<?php echo base_url('assets/css/bootstrap.min.css');?>"
确保你已经加载了 url 帮助程序或自动加载了 url 帮助程序
没有骰子。仍然没有工作。当我这样做时,它实际上变得很奇怪。它试图去domainname.com/www.domainname.com/assets/css/bootstrap.min.css 我很早就知道了,为什么我不使用base_url 或site_url。由于某种原因,它变得很奇怪。每次我在任何链接前面添加 base_url 或 site_url 时都会这样做。
【参考方案1】:
您不必使用 URL 帮助程序的功能,但除非您在 URL 前加上正斜杠,否则浏览器会确定您的资产实际上是使用当前页面中的 URI 段作为前缀。这是因为浏览器将 URL 视为相对 URL。为了克服这个问题,要么使用正斜杠,要么使用基本标签:https://www.w3schools.com/tags/tag_base.asp
基本标签示例:
<base href="https://example.com/">
在我自己的应用程序中,我只是使用正斜杠前缀使我的 URL 成为绝对 URL。在你的情况下,看起来像这样:
<link href="/assets/css/bootstrap.min.css" rel="stylesheet" />
编辑----
我刚刚注意到您的 htaccess 有 2 行,我希望您将括号转换为花括号,所以:
RewriteCond %(REQUEST_FILENAME) !-f
应该是:
RewriteCond %REQUEST_FILENAME !-f
只是为了好玩,试着改变这个:
RewriteRule ^ index.php [QSA,L]
到这里:
RewriteRule .* index.php/$0 [PT,L]
【讨论】:
我试过这样做,但它仍然会做奇怪的双域事情。它试图去 domainname.com/www.domainname.com/assets/css/bootstrap.min.css 编辑:没关系,我看错了帖子。它没有做双域的事情,但它仍然不能解决问题。 也许您没有正确配置您的应用程序?这不是浏览器的正常行为。除了你的重写库,你展示的所有代码看起来都很正常。 我用细齿梳浏览了配置文件夹。我唯一更改的是 base_url 和错误日志记录,其中显示 ERROR - 2017-12-24 19:09:33 --> 404 Page Not Found: Assets/js 用于所有尝试访问资产的 URL文件夹。 如果您创建一个输出 HTML 的最小示例并将其添加到您的问题中,这将是有益的。我得离开几个小时,但到时候再回来看看。 显然它只是花括号。我想当我在看教程视频时,我误读了那部分代码。感谢您的帮助@BrianGottier【参考方案2】:RewriteCond $1 !^(index.php|assets|myadmin|robots.txt)
【讨论】:
我找到解决方案添加这一行以上是关于codeigniter 中资产的 404/net::ERR_ABORTED 错误的主要内容,如果未能解决你的问题,请参考以下文章