无法访问 CodeIgniter 资产文件夹中的 CSS 文件,显示 404 错误

Posted

技术标签:

【中文标题】无法访问 CodeIgniter 资产文件夹中的 CSS 文件,显示 404 错误【英文标题】:Can't access CSS files in CodeIgniter assets folder, shows 404 error 【发布时间】:2017-06-28 00:30:49 【问题描述】:

我的应用程序文件夹结构是这样的

但我无法访问assets 文件夹中的内容。他们总是显示“404 page not found”。

例如,mysite.com/assets/frontend/page.css 显示错误。同时mysite.com/assets/css/bootstrap.min.css显示错误。

我的.htaccess 文件是

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【问题讨论】:

您是否设置了基本 url 并自动加载 url 助手? 是的,我添加了基本 url 并自动加载 url 帮助程序。该代码在我的开发服务器(Easy PHP Dev Server)中运行良好,但在我的虚拟主机中运行良好。 因为您最有可能使用相对链接。当您使用 mod_rewrite 时,您将需要使用绝对链接、前面的正斜杠或头部中的基本标记。 【参考方案1】:

将此规则添加到您的 htaccess 重写中:

RewriteCond $1 !^(index\.php|assets)

问题在于,当您从项目中删除 index.php 时,您实际上所做的是重写该级别的任何内容以指向 index.php...

如果 index.php 没有被阻止,你会看到例如http://localhost/index.php/assets/等等...

您需要调整重写以忽略您的资产文件夹!^(忽略开头)然后资产,这样您就可以访问该文件夹

您可以通过在浏览器中转到 mysite.com/assets/css/bootstrap.min.css 来检查它是否正常工作,并且它说它不存在(使用您当前的 .htaccess 文件)

你有RewriteRule ^(.*)$ index.php/$1 [L]的重写正在这样做......

^ 是字符串的开头 (uri) ( 是正则表达式组的开始 .* 是第一个 URI 级别的所有内容 ) 是正则表达式组的结尾 $ 是字符串的结尾

然后您告诉它有效地查看 index.php/ 然后继续看$1

我给你的规则是在你已经必须忽略某些 URI 段的情况下添加例外

【讨论】:

以上是关于无法访问 CodeIgniter 资产文件夹中的 CSS 文件,显示 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

在加载资产时找不到 codeigniter 404

php codeigniter无法访问托管中的文件pdf

无法访问资产目录中的图像

无法访问codeigniter控制器中的uri段

Codeigniter 资产文件夹最佳实践

Codeigniter 3 - 从外部 Codeigniter 安装访问会话