2010年11月18日 星期四

[快快樂樂教學] Codeigniter 移除index.php (專案篇)

又到了快快樂樂學習教學文,本篇將繼續介紹Codeigniter。

快快樂樂刪除CodeIgniter index.php講到如何移除討人厭的index.php,而這一篇文章將帶領大家如何將CI的system和application(專案),做一個抽離的部份。


平台簡介:
windows 7 + appserv

目標:
將下載下來的codeigniter 資料夾,與預設system的application抽離。

預先做好的設定:
打開apache rewrite,將.htaccess準備好,不知道怎麼作請參考文章

教學步驟開始:
將CodeIgniter_1.7.2,複製到C:\AppServ\ 底下,結果如下圖:


接著進入到c:\AppServ\CodeIgniter_1.7.2\system\底下將application救出來(複製、剪下),把整個資料夾貼到c:\AppServ\www\ 底下。


回到c:\AppServ\CodeIgniter_1.7.2\裡面的index.php檔案,複製到c:\AppServ\www\application\底下。

打開c:\AppServ\www\application\index.php,別開錯另外一個html,變動參數如下。

$system_folder = "c:/AppServ/CodeIgniter_1.7.2/system";
    
$application_folder = "c:/AppServ/www/application";

接著測試網站是否正常,應該會看到畫面如下。


最後還剩下一個問題,在application裡面要加上其他的controller似乎index.php的路徑問題又出現了。

接著先把剛剛的.htaccess檔案複製到c:\AppServ\www\application底下,開啟檔案修改。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /application/index.php/$1 [L]
</IfModule>

重點在於紅字的部份,其他跟上一篇文章均相同(請確認Apache rewrite已正確啟用)

最後測試一下是否真的能夠運作,新增一組controller、view

Controller:
儲存路徑
c:\AppServ\www\application\controllers\phpinfo.php
<?php

class Phpinfo extends Controller {

    function __construct()
    {
        parent::Controller();    
    }
    
    function index()
    {
        $this->load->view('phpinfo');
    }
}

View :
儲存路徑
c:\AppServ\www\application\views\phpinfo.php
<?php 
echo phpinfo(); 
?>

接著測試看看是否可以正常運作。
http://127.0.0.1/application/index.php?/phpinfo
http://127.0.0.1/application/phpinfo
都會看到相同結果,頁面應該如下圖。


結論:
這樣子作有什麼好處呢!?
第一:
不需要將整個CI資料夾移到public目錄中,減少主要結構目錄被破壞的可能性。
第二:
當系統需要升級時候直接修改application中index.php參數即可。
第三:
整個目錄結構會更加清晰,核心和專案可以完整分開。

如果大家對於這樣子架構有任何意見,歡迎一起討論。

沒有留言:

張貼留言

Facebook