2013-10-05 45 views
3

我有Codeigniter文件夹的以下目录结构。您可以看到,我已将所有资产放在应用程序根目录的assets文件夹中。Codeigniter:无法访问样式表

enter image description here

基本URL被定义为

$配置[ 'BASE_URL'] = 'http://kamran.dev/Codeigniter/application/';

我试图修改它

$配置[ 'BASE_URL'] = 'http://kamran.dev/Codeigniter/';

但这也没有工作。

enter image description here

任何人都可以请看看,并告诉我,我做错了什么吗?

P.S.然后,我删除了从包含

拒绝来自所有

application文件夹中的.htaccess文件这为我工作。但这似乎不是一个好主意。

+0

下面我想这个问题也关系到您的其他问题... – doitlikejustin

+0

你可能会说。但这更像是一个'htaccess',所以我把它放在一个单独的文件中。 –

+0

我想,一旦你获得了.htaccess访问权限,请改变你的'base_url'我怎么推荐它,你应该很好去。 – doitlikejustin

回答

3

您有多个选项。最简单的一种是资产的文件夹移动到相同水平的应用程序,使您的目录结构:

  • 应用
  • 系统
  • 资产
    • CSS
    • IMG
    • js

由于assets文件夹不在.htaccess文件夹中,因此不会被您的Web服务器阻止。

或者,你可以在资产文件夹下面添加规则.htaccess文件:

# /assets/.htaccess 
Allow from all 

我没有测试过这一点,但我认为它应该工作。

另一种方法是更改​​.htaccess并在资产文件夹上设置例外,但如果不编写备用规则来锁定所有不应该可访问的文件夹,那么删除Deny From All是一个非常糟糕的主意(具有安全隐患)。

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

此外,我会建议你使用BASE_URL来呼应你的URL()函数:

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

,或呼叫控制器/路由

base_url("controller/method"); 

的BASE_URL功能考虑的价值的$config['index_page']以及必要的前导/后沿斜线。

1

更改base_url以下几点:

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

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

1

作为一个除了严峻的答案。如果您对您的重写引擎应该在你的根的.htaccess

<IfModule mod_rewrite.c> 

RewriteEngine on 

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

</IfModule>