[CodeIgniter] lighttpd rewrite rule && apache mod_rewrite

CodeIgniter 要移除網址列存在的 index.php,apache 必須使用 mod_rewrite 寫入 .htaccess 的方式來達成,lighttpd 也是有支援 rewrite,可以參考官方文件:Module: mod_rewrite,設定方法很容易。

$HTTP["host"] == "mimi.twgg.org" {
  server.document-root = "/var/www/html/MLB/"
  url.rewrite = (
        "^/images/.*$" => "$0",
        "^/includes/.*$" => "$0",
        "^/(.*)$" => "index.php/$1"

  )
  accesslog.filename = "/var/log/lighttpd/mimi.twgg.org-access_log"
}

images 跟 include 是您放圖片或者是 css js 的地方,您也可以開一個資料夾把全部靜態檔案放進去,就可以了,這樣不用設定太多的 rule,apache 的 .htaccess 設定方法如下:

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|includes)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
兩種作法很類似,都不難,筆記一下,將來會用到。 可以參考 CodeIgniter 官方文件:

CodeIgniter URLs


See also