Rewrite 最近不小心沉迷在研究Apache的mod_rewrite, 剛好也有點心得, 所以寫篇簡單心得放在這裡吧。 其實一切都是因為我從 Cakephp 裡的.htaccess得到一些靈感開始的, 所以我就以Cakephp的rewrite方法來作點說明吧! 首先看到Cakephp根目錄下的.htaccess檔吧: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> 第一行和最後一行基本上算是必備, 所以不用問太多加下去就對了XD 第二行開始,代表著你要啟用RewriteEngine的功能, 這一行必加,因為不加的話,你也不會知道為啥你的rewrite無效~ 第三、四行則代表要把所有的Request導向給app/webroot, 換言之,Cakephp根目錄下的index.php基本上是擺好玩的! 既然前面提到已經被導向至app/webroot了, 那麼就繼續看app/webroot/.htaccess的內容吧: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> 第一行、第二行和最後一行內容跟前段相同,所以就不多說了, 比較有意思的是第三、四、五行。 其意義如下: RewriteCond %{REQUEST_FILENAME} !-d 意義: 任何附掛的字串都不會被視為一個目錄 比如你輸入http://localhost/cakephp/a/s/d,(cakephp是你放cakephp檔案的目錄) 那麼rewrite將會把a/s/d當成一般字串,而不會繼續去尋找cakephp下是不是有目錄a、目錄s。 Rewr...