3

我有以下 Codeigniter 文件夹的目录结构。您可以看到我已将所有资产放在assets应用程序根目录的文件夹中。

在此处输入图像描述

基本 URL 定义为

$config['base_url'] = ' http://kamran.dev/Codeigniter/application/ ';

我尝试将其修改为

$config['base_url'] = ' http://kamran.dev/Codeigniter/ ';

但这也没有用。

在此处输入图像描述

谁能看看并告诉我我在这里做错了什么?

applicationPS 然后我从包含的文件夹中删除了 .htaccess 文件

拒绝所有人

这对我有用。但这似乎不是一个好主意。

4

3 回答 3

3

您在这里有多种选择。最简单的一种是将资产文件夹移动到与应用程序相同的级别,以便您的目录结构为:

  • 应用
  • 系统
  • 资产
    • css
    • 图像
    • js

因为 assets 文件夹不在带有 .htaccess 的文件夹中,Deny From All所以它不会被您的 Web 服务器阻止。

或者,您可以使用以下规则在 assets 文件夹中添加 .htaccess 文件:

# /assets/.htaccess
Allow from all

我没有对此进行测试,但我认为它应该可以工作。

另一种选择是更改 .htaccess 并在资产文件夹上放置一个例外,但在Deny From All不编写备用规则以锁定所有不应访问的文件夹的情况下删除它是一个非常糟糕的主意(具有安全隐患)。

此外,将您设置base_url为包含应用程序、系统和资产目录的文件夹(此文件夹包含 Codeigniter 的引导程序/前端控制器 index.php)。

此外,我建议您使用 base_url() 函数回显您的网址:

base_url("assets/css/bootstrap.min.css");

或调用控制器/路由

base_url("controller/method");

base_url 函数考虑了斜杠的值$config['index_page']以及必要的前导/尾随斜杠。

于 2013-10-06T01:30:59.947 回答
1

作为严峻答案的补充。如果你有你的重写引擎,你应该在你的根 .htaccess 中有以下内容

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [PT,L]  

</IfModule>
于 2014-10-11T14:38:47.607 回答
1

将您更改base_url为以下内容:

echo base_url("assets/css/file-name-here.css");

您想将 URL 字符串传递给base_url函数。这样,您可以更改$config['base_url']为您想要的任何内容,它将正确地将字符串附加到该 URL。

于 2013-10-05T19:10:39.610 回答