注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

xiaozhuge0825的博客

 
 
 

日志

 
 

Codeigniter目录详解,Codeigniter 2.0多目录配置详解  

2012-03-20 09:44:35|  分类: 框架 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Codeigniter 2.0.0 已经发布快一个月了,关于新版本的一些变化大家可以查看CI中国网站有详细说明,本文主要讲述多目录配置以及URL设置这两个问题。
目标一:CI 2.0 多目录(应用程序)配置。
多目录的意思是指在同一个网站中有多套程序,最简单的例子就是网站的前台展示与后台管理。二者由于在网站功能中分属不同部分,通常会有不同的界面, 用到images/stylesheet/javavascript基本是分开的,所以设置不同目录。直观的例子来看,形如以下:
网站前台URL:http://www.aaa.com 网站后台管理URL::http://www.aaa.com/admin
CI 2.0源码下载解压后文件结构如下图,默认是只有一个目录的。

 
为了达成多目录共享一个CodeIgniter的目标,我们要完成以下步骤:
1、 在application目录下新建子目录admin,将上图中红框标注的5个文件夹复制到admin下。这五个文件夹的的作用简单描述一下,详细说明可参考CI官网:
admin/config:基本配置文件
autoload.php 可设置本目录程序默认加载哪些类库;
config.php 可设置仅限本目录程序的一些全局变量;
database.php 可设置仅限本目录程序的数据库连接(DSN)变量;
routes.php  可设置本目录程序的默认加载控制器。
admin/controllers:存放本目录控制器
admin/libraris:存放本目录CI类库
admin/models:存放本目录的模型文件,这个地方有必要解释一下,通常前台后台用到的数据表(table)是相同的,但是对数据表的基本 操作是不同的,现在的做法用来将各部分常用的数据模型操作写成function分别存放,当然也不排除两部分会有相同情况,如都可以自定义方法 get_all()用来读取当前模型(table)的所有数据。
admin/view:存放本目录的视图,可以理解为page。
2、设置入口文件。因为根目录下的index.php默认是去找applcation下的controllers下的控制器,为了读取 applcation/admin/controllers下的控制器,我们需要在网站根目录下新建admin文件,并将根目录下的index.php复 制至此,接下来编辑此index.php,找到:
?

1
2

$system_path
=
"system"
;  
//改为 $system_path = "../system";
$application_folder
=
"application"

//改为 $application_folder = "../application/admin";

 
另外此目录可能用到的css/js/images 文件夹 也可以放在新建的admin之下。
此时的程序目录结构如下:

 
 
 
 
///至此,第一个目标已经实现,我把两个目录的默认控制器加载的视图分别做了一下修改,现在给大家展示下我们第一个目标的成果。
前台:
 

 
 
后台:
 

 
个人原创,转载请注明出处,谢谢。原文链接:http://www.phpwell.com/?p=535
目标二:设置友好简洁的URL。
第一个目标完成之后,现在通过URL http://ci.home/admin 可以去读取当前应用程序里面配置文件中默认设置好的控制器welcome,但是对于非默认的控制器读取url就有些略长了,比如在 admin/applcation/controllers里有一个login控制器(对应程序就是login类)用来显示后台登陆页面,需要通过这个 url才能访问 http://ci.home/admin/index.php/login/index ,根据CI规则,如果url中不写类的方法会默认读取index()方法,所以上面这个url也可以通过http://ci.home/admin /index.php/login访问。
要实现的目标显然不是上面这个,这个URL中还有一个index.php是看着不舒服的,真正的目标是把它去掉。实现方式其实很简单,那就是通 过.htaccess文件对URL重写(rewrite)。接下来在根目录下admin文件里里面创建一个.htaccess文件,内容如下:
 
 
?

1
2
3

RewriteEngine on
 
RewriteCond $1 !^(index\.php|images|css|js|scripts|robots\.txt|)
 
RewriteRule ^(.*)$ index.php/$1 [L]

不熟悉apache .htaccess文件重写规则的可以去查一下文档,此处规则是将对admin的访问除images、css、js、scripts外都转向此目录下的index.php。
所以CI可以通过重定向将 http://ci.home/admin/login
转向http://ci.home/admin/index.php/login 。(
  评论这张
 
阅读(177)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018