404/net::ERR_ABORTED codeigniter 中的资产错误

404/net::ERR_ABORTED error for assets in codeigniter

我正在浏览我的第一个 Codeigniter 网页,并且 运行 发现了一些特点。首先是我不需要在我的 URL 前面使用 base_url 或 site_url 来让它们工作,至少最初不需要。我设置了主页,然后简单地做了

<link href="assets/css/bootstrap.min.css" rel="stylesheet" />

而且这个好像是自动在前面加了域名。我不确定它是如何工作的,但它适用于所有类似的 URL。当我查看检查 window 时,它显示为 this。我不知道这是否相关,但我想记下它。

问题在我的第二页上。我添加了一个名为 Admin 的新控制器,并将其设置为显示不同的页面。我以与之前相同的方式设置 URL,但是当我加载它时,CSS 和 Javascript 没有加载。以防万一,我尝试通过 Domainname.com/Admin 加载它。 html 加载正确,但当我查看控制台时,它给了我一个 net::ERR_ABORTED and 404 errors for my images and files. I've double checked all of them, and they are all in the correct spot. I found this page: 并尝试在我的 .htaccess 文件中使用该解决方案。它不仅不起作用,而且现在正常工作的原始页面拒绝加载任何资产文件。我尝试删除新的代码行,但它仍然无法正常工作,即使一切都与以前完全相同。

这是我的 .htaccess 文件夹:

RewriteEngine On
RewriteBase /eventCentral/

RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d

#RewriteCond  !^(index\.php|assets)

RewriteRule ^ index.php [QSA,L]

我尝试完全删除注释的代码段,但仍然没有修复。

我的文件结构也是正确的,可以看到here.

正如我所说,我对 code igniter 还是很陌生,所以如果答案可以分解为 Barney 风格,我将不胜感激。我也尝试查看了一些看起来相关的堆栈溢出问题,但我仍然没有找到有效的解决方案。

您不必使用 URL 帮助程序的功能,但除非您在 URL 前面加上正斜杠,否则浏览器会决定您的资产实际上以 URI 段为前缀从当前页面。那是因为浏览器将 URL 视为相对 URL。为了克服这个问题,请使用正斜杠或基本标记:https://www.w3schools.com/tags/tag_base.asp

基本标签示例:

<base href="https://example.com/">

在我自己的应用程序中,我只是使用正斜杠前缀使我的 URLs 绝对化。在你的情况下,它看起来像这样:

<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/[=15=] [PT,L]

RewriteCond $1 !^(index.php|assets|myadmin|robots.txt)