Codeigniter:无法访问样式表

时间:2013-10-05 18:42:29

标签: php codeigniter

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

enter image description here

基本网址定义为

  

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

我尝试将其修改为

  

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

但这也不起作用。

enter image description here

任何人都可以看看,告诉我这里我做错了什么?

P.S。然后我从包含

application文件夹中删除了.htaccess文件
  

拒绝所有

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

3 个答案:

答案 0 :(得分:3)

这里有多个选项。最简单的方法是将assets文件夹移动到与应用程序相同的级别,以便您的目录结构为:

  • 应用
  • 系统
  • 资产
    • CSS
    • IMG
    • JS​​

由于assets文件夹不在.htaccess与Deny From All的文件夹中,因此您的网络服务器不会阻止它。

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

# /assets/.htaccess
Allow from all

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

另一种选择是更改.htaccess并在assets文件夹上放置一个异常,但是在不编写备用规则来锁定所有不应该删除的文件夹的情况下移除Deny From All是一个非常糟糕的想法(具有安全隐患)可以访问。

另外,将base_url设置为包含应用程序,系统和资源目录的文件夹(此文件夹包含Codeigniter的bootstrap / front controller index.php)。

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

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

或调用控制器/路径

base_url("controller/method");

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

答案 1 :(得分:1)

将您的base_url更改为以下内容:

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

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

答案 2 :(得分:1)

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

中有以下内容
<IfModule mod_rewrite.c>

RewriteEngine on

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

</IfModule>