Codeigniter 2.0.0 已經(jīng)發(fā)布快一個月了,關(guān)于新版本的一些變化大家可以查看CI中國網(wǎng)站有詳細(xì)說明,本文主要講述多目錄配置以及URL設(shè)置這兩個問題。
目標(biāo)一:CI 2.0 多目錄(應(yīng)用程序)配置。
多目錄的意思是指在同一個網(wǎng)站中有多套程序,最簡單的例子就是網(wǎng)站的前臺展示與后臺管理。二者由于在網(wǎng)站功能中分屬不同部分,通常會有不同的界面, 用到images/stylesheet/javavascript基本是分開的,所以設(shè)置不同目錄。直觀的例子來看,形如以下:
網(wǎng)站前臺URL:http://www.aaa.com 網(wǎng)站后臺管理URL::http://www.aaa.com/admin
CI 2.0源碼下載解壓后文件結(jié)構(gòu)如下圖,默認(rèn)是只有一個目錄的。
為了達成多目錄共享一個CodeIgniter的目標(biāo),我們要完成以下步驟:
1、 在application目錄下新建子目錄admin,將上圖中紅框標(biāo)注的5個文件夾復(fù)制到admin下。這五個文件夾的的作用簡單描述一下,詳細(xì)說明可參考CI官網(wǎng):
admin/config:基本配置文件
autoload.php 可設(shè)置本目錄程序默認(rèn)加載哪些類庫;
config.php 可設(shè)置僅限本目錄程序的一些全局變量;
database.php 可設(shè)置僅限本目錄程序的數(shù)據(jù)庫連接(DSN)變量;
routes.php 可設(shè)置本目錄程序的默認(rèn)加載控制器。
admin/controllers:存放本目錄控制器
admin/libraris:存放本目錄CI類庫
admin/models:存放本目錄的模型文件,這個地方有必要解釋一下,通常前臺后臺用到的數(shù)據(jù)表(table)是相同的,但是對數(shù)據(jù)表的基本 操作是不同的,現(xiàn)在的做法用來將各部分常用的數(shù)據(jù)模型操作寫成function分別存放,當(dāng)然也不排除兩部分會有相同情況,如都可以自定義方法 get_all()用來讀取當(dāng)前模型(table)的所有數(shù)據(jù)。
admin/view:存放本目錄的視圖,可以理解為page。
2、設(shè)置入口文件。因為根目錄下的index.php默認(rèn)是去找applcation下的controllers下的控制器,為了讀取 applcation/admin/controllers下的控制器,我們需要在網(wǎng)站根目錄下新建admin文件,并將根目錄下的index.php復(fù) 制至此,接下來編輯此index.php,找到:
$system_path = "system"; //改為 $system_path = "../system"; $application_folder="application"; //改為 $application_folder = "../application/admin";
另外此目錄可能用到的css/js/images 文件夾 也可以放在新建的admin之下。
此時的程序目錄結(jié)構(gòu)如下:
至此,第一個目標(biāo)已經(jīng)實現(xiàn),我把兩個目錄的默認(rèn)控制器加載的視圖分別做了一下修改,現(xiàn)在給大家展示下我們第一個目標(biāo)的成果。
前臺:
后臺:
目標(biāo)二:設(shè)置友好簡潔的URL。
第一個目標(biāo)完成之后,現(xiàn)在通過URL http://ci.home/admin 可以去讀取當(dāng)前應(yīng)用程序里面配置文件中默認(rèn)設(shè)置好的控制器welcome,但是對于非默認(rèn)的控制器讀取url就有些略長了,比如在admin/applcation/controllers里有一個login控制器(對應(yīng)程序就是login類)用來顯示后臺登陸頁面,需要通過這個url才能訪問 http://ci.home/admin/index.php/login/index ,根據(jù)CI規(guī)則,如果url中不寫類的方法會默認(rèn)讀取index()方法,所以上面這個url也可以通過http://ci.home/admin/index.php/login訪問。
要實現(xiàn)的目標(biāo)顯然不是上面這個,這個URL中還有一個index.php是看著不舒服的,真正的目標(biāo)是把它去掉。實現(xiàn)方式其實很簡單,那就是通過.htaccess文件對URL重寫(rewrite)。接下來在根目錄下admin文件里里面創(chuàng)建一個.htaccess文件,內(nèi)容如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|scripts|robots\.txt|)
RewriteRule ^(.*)$ index.php/$1 [L]
不熟悉apache .htaccess文件重寫規(guī)則的可以去查一下文檔,此處規(guī)則是將對admin的訪問除images、css、js、scripts外都轉(zhuǎn)向此目錄下的index.php。
所以CI可以通過重定向?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)站前臺后臺的方法(2) 【不同方法】