apache mod_rewrite的rule規則

常常忘記
記下來免得忘記

RewriteCond: 表示新的規則開始
參數:
[NC] (不分字母大小寫)
[OR] (或者, 用來與下一規則連結用)

RewriteRule : 重新導向的規則
常用參數: (其他請自行參考apache手冊)
[R] 重新導向
[F] 重新導向到 403 forbidden 頁面
[L] 表示這是最後一條規則

常用到的規則表示式:
. 任何單一字母
[chars] chars字母中的其中一個
[^chars] 不包含 chars 的字母
? 0個或是1個字母
* 0個或是N個字母
+ 1個或是N個字母
^ 表示一行的開始
$ 表示一行的結束
\ 跳脫字元(顯示符號本身)

以下是一個簡單範本

RewriteEngine on
RewriteRule ^([^./]+)/?$ $1.php [L]
RewriteRule ^index.html$ index.php
RewriteRule ^detail([0-9a-zA-Z]+)\.html$ detail.php?id=$1
RewriteRule ^([0-9A-Za-z]+)-([0-9A-Za-z]+)\.html$ archives.php?year=$1&month=$2
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ archives.php?year=$1&month=$2&day=$3&cstart=$4 [L]
RewriteRule ^writemessage.html writemessage.php
RewriteRule ^index_([0-9a-zA-Z]+)\.html$ index.php?tagno=$1 [QSA] =>Query String Access轉換後還可以用GET吃變數