php-codeIgniter簡潔的網址去掉 index.php 將網址尾巴改成html

CI - 簡潔的網址 用 mod_rewrite 去掉 index.php
簡潔網址是常常在drupal中使用的,CI裡也有這樣的功能
例如有一個project名稱叫做account,放在AppServ/www底下,只取用本來CodeIgniter的部分資料夾及檔案:

    AppServ/www/account/
        application/
        system/
        index.php

[Step1] 確定 Apache 的 mod_rewrite 功能有開啟

AppServ/Apache2.2/conf/httpd.conf

    mod_rewrite 反註解

#LoadModule rewrite_module modules/mod_rewrite.so
=> LoadModule rewrite_module modules/mod_rewrite.so

    AllowOverride 有三處要改

AllowOverride None
=> AllowOverride All
[Step2] 修改 config.php

AppServ/www/account/application/config/config.php

$config['index_page'] = 'index.php';
=> $config['index_page'] = '';
[Step3] 新增.htaccess

在整個專案的根目錄增加.htaccess
此例中的架構如下

    AppServ/www/account
        application/
        system/
        index.php
        .htaccess

.htaccess的內容

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond $1 !^(index\.php|images|swf|uploads|js|css|assets|robots\.txt|$)
    RewriteRule ^(.*)$ /account/index.php/$1 [L,QSA]
</IfModule>

RewriteCond $1 !^(index\.php|images|swf|uploads|js|css|assets|robots\.txt|$)
這條是為了不讓mod_rewrite後,檔案裡面的圖、template失效,所需要一併改寫的。
[Step4] 設定完成,重開機

用了好幾次 Appserv 的 Control Server by Service
做 Apache Restart 都一直沒有成功
直接重開機是最快的方式

本來瀏覽器要輸入 localhost/account/index.php/account
現在用 localhost/account/account 就可以囉

以後的專案只要建在 Appserv/www 底下,然後再做Step2、Step3就可以了 (更動Apache設定才需要重開機)

    Appserv/www
        account (專案名稱)/
            application/
            controllers/
            account.php (各個Controllers)
        project1/
        project2/
        .
        .

用 localhost/專案名稱/Controllers 就可以囉
ex: localhost/account/account

另外甚至你還可以在網址後面加上.html
只要在application\config中加入 URL 後置字串

config/config.php 檔案可以設定後置字串,讓所有的由 CodeIgniter 產生的 URLs 都附戴上去。舉例來說,假如某個 URL 如下:
example.com/index.php/products/view/shoes

你可以依照需求增加後置字串,像加上 .html 讓你的網址看起來像底下的型式:
example.com/index.php/products/view/shoes.html

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json