Codeigniter 2.0.0 已經(jīng)發(fā)布快一個(gè)月了,關(guān)于新版本的一些變化大家可以查看CI中國(guó)網(wǎng)站有詳細(xì)說(shuō)明,本文主要講述多目錄配置以及URL設(shè)置這兩個(gè)問(wèn)題。
目標(biāo)一:CI 2.0 多目錄(應(yīng)用程序)配置。
多目錄的意思是指在同一個(gè)網(wǎng)站中有多套程序,最簡(jiǎn)單的例子就是網(wǎng)站的前臺(tái)展示與后臺(tái)管理。二者由于在網(wǎng)站功能中分屬不同部分,通常會(huì)有不同的界面, 用到images/stylesheet/javavascript基本是分開(kāi)的,所以設(shè)置不同目錄。直觀的例子來(lái)看,形如以下:
網(wǎng)站前臺(tái)URL:http://www.aaa.com 網(wǎng)站后臺(tái)管理URL::http://www.aaa.com/admin
CI 2.0源碼下載解壓后文件結(jié)構(gòu)如下圖,默認(rèn)是只有一個(gè)目錄的。

為了達(dá)成多目錄共享一個(gè)CodeIgniter的目標(biāo),我們要完成以下步驟:
1、 在application目錄下新建子目錄admin,將上圖中紅框標(biāo)注的5個(gè)文件夾復(fù)制到admin下。這五個(gè)文件夾的的作用簡(jiǎn)單描述一下,詳細(xì)說(shuō)明可參考CI官網(wǎng):
admin/config:基本配置文件
autoload.php 可設(shè)置本目錄程序默認(rèn)加載哪些類庫(kù);
config.php 可設(shè)置僅限本目錄程序的一些全局變量;
database.php 可設(shè)置僅限本目錄程序的數(shù)據(jù)庫(kù)連接(DSN)變量;
routes.php 可設(shè)置本目錄程序的默認(rèn)加載控制器。
admin/controllers:存放本目錄控制器
admin/libraris:存放本目錄CI類庫(kù)
admin/models:存放本目錄的模型文件,這個(gè)地方有必要解釋一下,通常前臺(tái)后臺(tái)用到的數(shù)據(jù)表(table)是相同的,但是對(duì)數(shù)據(jù)表的基本 操作是不同的,現(xiàn)在的做法用來(lái)將各部分常用的數(shù)據(jù)模型操作寫成function分別存放,當(dāng)然也不排除兩部分會(huì)有相同情況,如都可以自定義方法 get_all()用來(lái)讀取當(dāng)前模型(table)的所有數(shù)據(jù)。
admin/view:存放本目錄的視圖,可以理解為page。
2、設(shè)置入口文件。因?yàn)楦夸浵碌膇ndex.php默認(rèn)是去找applcation下的controllers下的控制器,為了讀取 applcation/admin/controllers下的控制器,我們需要在網(wǎng)站根目錄下新建admin文件,并將根目錄下的index.php復(fù) 制至此,接下來(lái)編輯此index.php,找到:
$system_path = "system"; //改為 $system_path = "../system"; $application_folder="application"; //改為 $application_folder = "../application/admin";
另外此目錄可能用到的css/js/images 文件夾 也可以放在新建的admin之下。
此時(shí)的程序目錄結(jié)構(gòu)如下:

至此,第一個(gè)目標(biāo)已經(jīng)實(shí)現(xiàn),我把兩個(gè)目錄的默認(rèn)控制器加載的視圖分別做了一下修改,現(xiàn)在給大家展示下我們第一個(gè)目標(biāo)的成果。
前臺(tái):

后臺(tái):

目標(biāo)二:設(shè)置友好簡(jiǎn)潔的URL。
第一個(gè)目標(biāo)完成之后,現(xiàn)在通過(guò)URL http://ci.home/admin 可以去讀取當(dāng)前應(yīng)用程序里面配置文件中默認(rèn)設(shè)置好的控制器welcome,但是對(duì)于非默認(rèn)的控制器讀取url就有些略長(zhǎng)了,比如在admin/applcation/controllers里有一個(gè)login控制器(對(duì)應(yīng)程序就是login類)用來(lái)顯示后臺(tái)登陸頁(yè)面,需要通過(guò)這個(gè)url才能訪問(wèn) http://ci.home/admin/index.php/login/index ,根據(jù)CI規(guī)則,如果url中不寫類的方法會(huì)默認(rèn)讀取index()方法,所以上面這個(gè)url也可以通過(guò)http://ci.home/admin/index.php/login訪問(wèn)。
要實(shí)現(xiàn)的目標(biāo)顯然不是上面這個(gè),這個(gè)URL中還有一個(gè)index.php是看著不舒服的,真正的目標(biāo)是把它去掉。實(shí)現(xiàn)方式其實(shí)很簡(jiǎn)單,那就是通過(guò).htaccess文件對(duì)URL重寫(rewrite)。接下來(lái)在根目錄下admin文件里里面創(chuàng)建一個(gè).htaccess文件,內(nèi)容如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|scripts|robots\.txt|)
RewriteRule ^(.*)$ index.php/$1 [L]
不熟悉apache .htaccess文件重寫規(guī)則的可以去查一下文檔,此處規(guī)則是將對(duì)admin的訪問(wèn)除images、css、js、scripts外都轉(zhuǎn)向此目錄下的index.php。
所以CI可以通過(guò)重定向?qū)?nbsp;http://ci.home/admin/login
轉(zhuǎn)向http://ci.home/admin/index.php/login 。(全文完)
原文:http://www.phpwell.com/?p=535
相關(guān)教程:Codeigniter多目錄配置網(wǎng)站前臺(tái)后臺(tái)的方法(2) 【不同方法】
