我正在使用CodeIgniter Version 2.1 &试图链接资产,如图像,样式表,javascript文件等在我的视图中使用,header.php
:
<link href="<?php base_url();?>css/style.css" rel="stylesheet" />
控制器代码,调用视图:
<?php
class Main extends CI_Controller{
public function index() {
$this->load->view('header');
}
- 我试图从其中加载资源的视图文件被定位
../application/views/header.php
。 - 加载css文件:
../application/views/css/style.css
这不起作用。我得到404 -页面未找到错误。然后,我尝试将css/style.css
移到webroot的../application
目录之外。令我惊讶的是,在webroot(outsite ../application/views)中拥有资产似乎工作得很好。
现在,我的问题是
- 将我们的资产直接放在webroot,站点外的
../application
目录中是正确的方法吗?如果是/否,那么为什么? - 如果在webroot中直接拥有资产是一个好主意,那么我应该在webroot中移动
../application/views
目录吗?如何?
PS:我是CodeIgniter框架的新手,所以不了解最佳实践
如果您看到这个,使用.htaccess
从url中删除index.php
的部分具有重写条件:
RewriteCond $1 !^(index'.php|images|robots'.txt)
在这一行中,images是一个在mod重写时将被忽略的文件夹。所以,你可以用assets代替它,把所有的直接链接文件放在那里,然后愉快地使用它们。
RewriteCond $1 !^(index'.php|assets|robots'.txt)
编辑:我的错,没有看到问题被问到的日期。然而,应该对某些人有用。
最好将你的资源放在webroot文件夹中。当从服务器请求资产时(取决于您的设置),它将从根目录开始,并向下工作。
http://yoursite.com/application/views/css/mystyles.css
如果它在根目录下,你只需要从那里开始
http://yoursite.com/css/mystyles.css虽然它可能值得把它们都放在一个文件夹(/assets)中以保持它们的包含,以及编写更有效的重写规则的能力(如果你试图从url中删除index.php)来忽略单个文件夹而不是所有单独的文件夹(/css,/js等)
至于视图文件夹,最好将其留在application
文件夹中,因为CodeIgniter有一个内置的加载器,当您使用代码$this->load->view('myview')
/application/views
中的视图文件。虽然有办法移动视图文件夹,但如果你是CI新手,最好现在就把它留在那里。
对于链接css,你可以这样做:
<>之前回声link_tag (css/mystyles.css);之前查看ref: http://codeigniter.com/user_guide/helpers/html_helper.html