CodeIgniter

移除 index.php 檔案

針對Apache Web server
1.開啟Apache mod_rewrite的模組功能
a. check apache config
[root@server ~]# httpd -V
找出組態設定目錄及模組檔案目錄,如下所示

-D HTTPD_ROOT="/etc/httpd"
...
-D SERVER_CONFIG_FILE="conf/httpd.conf"

檢查是否有mod_rewrite的模組,應該要看到mod_rewrite.so這個檔案

[root@server ~]# ls /etc/httpd/modules | grep mod_rewrite
mod_rewrite.so

檢查是否在組態檔中有載入mod_rewrite的模組,應該要看到LoadModule rewrite_module modules/mod_rewrite.so這行敘述,注意前面不可以有#這個符號,如果有的話,請將#移除

[root@server ~]# grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite
LoadModule rewrite_module modules/mod_rewrite.so

2.確認所在目錄是否有允許使用,htaccess來覆蓋Apache的全域設定

[root@server ~]# grep -i AllowOverride /etc/httpd/conf/httpd.conf
AllowOverride None

AllowOverride必須設定為All,請注意,如果有針對不同目錄有設定不同組態的話,請針對不同目錄來設定,如下所示

<Directory /var/www/iweeko_web2 >
    AllowOverride all # <- 這一行很重要
    Options all
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

重新啟動Apache
[root@server ~]# /etc/init.d/httpd restart

3.修改CodeIgniter所在目錄下的.htaccess檔 index.php 這個檔案通常包含在你的 URLs 裡頭:

example.com/index.php/news/article/my_article 你可以輕鬆的把 index.php 用 .htaccess 移除,只消對 index.php 設定些簡單的規則。請參考底下的範例。使用 negative 方式把全部都導向,除了某些制定的項目:

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

References

results matching ""

    No results matching ""