Ubuntu apache2 enable rewrite module and setting AllowOverride
今天下午在設定 apache 伺服器 rewrite module 的時候遇到了一些問題。花了一兩個小時才找到問題,這問題以前應該解過,只是很就沒碰就忘了,所以把他記錄下來。最近在用CodeIgniter(CI) 這套 php framework需要用到 rewrite module來改寫Requst Uri。 我原本以為只要下指令Load rewrite module 再重開 apache 就好了 sudo a2enmod rewrite sudo /etc/init.d/apache2 restart 殊不知,啟動後沒有效果,試了很多方式,發現我有個最基本的設定沒有改動,也就是 apache 設定的AllowOverride這個參數需要設定,但這個參數老實說我也不太了解,趁這個機會了解一下好了。 通常我們會將rewrite rule寫在 .htaccess這個檔案中,但好死不死 AllowOverride這個參數就是在控制 .htaccess 這個檔案中寫的設定值,可否覆蓋掉 apache 設定檔中設定的值,所以需要對這個參數做設定。這個參數的設定也跟安全性有關。以下列出可能的設定值與其意義。 All 全允許 AuthConfig 允許覆蓋認證相關的設定 FileInfo 允許覆蓋文件相關的設定(包含rewrite module, mime module的相關設定) 其他還有 Indexes, Limit, Options[=Option,...] 詳細內容可以參考 http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride 我只需要設定 AollowOverride FileInfo 就可以. vim /etc/apache2/sites-enabled/000-default AollowOverride None 改成 AoolowOverride FileInfo 其實這個設定還有.htacces設定後子目錄相關的問題,有點懶,這裡就不探討了。