CI框架多目錄設置


1,設置目的,前臺與後臺實現獨立目錄管理
2.通過http://www.myci.com  訪問前臺,通過http://www.myci.com/admin 訪問後臺,

多目錄的意思是指在同一個網站中有多套程序,最簡單的例子就是網站的前臺展示與後臺管理。二者由於在網站功能中分屬不同部分,通常會有不同的界面,用到images/stylesheet/javavascript基本是分開的,所以設置不同目如以下:

網站前臺URL:http://www.myci.com 網站後臺管理URL::http://www.myci.com/admin
CI 2.0源碼下載解壓後文件結構如下圖,默認是隻有一個目錄的

CI框架多目錄設置 - huangcheng - 藍星


2、設置入口文件。因爲根目錄下的index.php默認是去找applcation下的controllers下的控制器,爲了讀取applcation/admin/controllers下的控制器,我們需要在網站根目錄下新建admin文件,並將根目錄下的index.php複製至此,接下來編輯此index.php,找到:

1 $system_path "system";   //改爲 $system_path = "../system";
2 $application_folder="application";  //改爲 $application_folder = "../application/admin";

另外此目錄可能用到的css/js/images 文件夾 也可以放在新建的admin之下。


CI框架多目錄設置 - huangcheng - 藍星

第一個目標完成之後,現在通過URL http:www.//myci/admin 可以去讀取當前應用程序裏面配置文件中默認設置好的控制器welcome,但是對於非默認的控制器讀取url就有些略長了,比如在admin/applcation/controllers裏有一個login控制器(對應程序就是login類)用來顯示後臺登陸頁面,需要通過這個url才能訪問 http://www.myci/admin/index.php/login/index ,根據CI規則,如果url中不寫類的方法會默認讀取index()方法,所以上面這個url也可以通過http://www.myci/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 ^(.*)$ /manage/index.php/$1 [L]

——————————————————————————
附,.htacess知識



官方方法:默認情況下,index.php 將被包含在你的 URL 中:

example.com/index.php/news/article/my_article

你可以很容易的通過 .htaccess 文件來設置一些簡單的規則刪除它。下面是一個例子,使用“negative”方法將非指定內容進行重定向:

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

注意:如果你的項目不在根目錄請把上面這一句改爲:RewriteRule ^(.*)$ index.php/$1 [L]

在上面的例子中,可以實現任何非 index.php、images 和 robots.txt 的 HTTP 請求都被指向 index.php。


官方方法的問題:

1. 沒有說明.htaccess文件創建到哪個目錄;.htaccess文件放到index.php所在目錄,一般爲CodeIgniter跟目錄。

2. 不用管application和system目錄中的.htaccess

3. 若項目不在根目錄,則需要在最後一句語句加上ci所在目錄的路徑,  RewriteRule ^(.*)$ /ci_dir/index.php/$1 [L]

eg. index.php文件在wwwroot\\codeigniter,wwwroot是跟目錄,則最後一句改爲 RewriteRule ^(.*)$ /codeigniter/index.php/$1 [L]


4. [中級] 有效刪除URL中的index.php http://codeigniter.org.cn/forums/thread-15444-1-1.html 這個博客中的RewriteCond $1 !^(index\\\\.php|images|robots\\\\.txtl)最後多了一個l

5. apache一般默認都加載了重寫模塊,具體可以查看 Apache\\conf\\httpd.conf文件

LoadModule rewrite_module modules/mod_rewrite.so

以下內容不需要修改

<Directory />
Options FollowSymLinks
AllowOverride none
Order deny,allow
Deny from all
</Directory>


6. 不需要修改application/config/config.php中的$config['index_page'] = 'index.php'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章