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,找到:
$system_path = "system"; //改為 $system_path = "../system"; $application_folder="application"; //改為 $application_folder = "../application/admin";
另外此目錄可能用到的css/js/images 文件夾 也可以放在新建的admin之下。
此時的程序目錄結構如下:
至此,第一個目標已經實現,我把兩個目錄的默認控制器加載的視圖分別做了一下修改,現在給大家展示下我們第一個目標的成果。
前臺:
后臺:
目標二:設置友好簡潔的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文件,內容如下:
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 。(全文完)
原文:http://www.phpwell.com/?p=535
相關教程:Codeigniter多目錄配置網站前臺后臺的方法(2) 【不同方法】