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
- How to enable mod_rewrite on Apache?, http://www.ewhathow.com/2013/09/how-to-enable-mod_rewrite-on-apache/
- CodeIgniter URLs, https://codeigniter.org.tw/user_guide/general/urls.html