2008年6月21日 星期六

Apache 中 RedirectMatch 的使用方法

Redirect Match 匹配重定向

前提:

當我們需要從一個域名改到另一個域名,或者對服務器的目錄結構進行調整時,你的用戶還是從老的目錄進來,就可能會遇到找不到文件,或是訪問禁止等等問題。
如何解決這個問題?

這時候RedirectMatch就顯得非常有用,如果你租用的虛擬主機是apache,你也可以使用目錄下的.htaccess里設置RedirectMatch。

語法: RedirectMatch [status] regex URL
regex 為 regular expressions 的縮寫,具體參考 Apache 手冊。

應用: 服務器配置, 虛擬主機, 目錄, .htaccess文件

舉例:

1) 將一個目錄重定向到一個文件:
RedirectMatch 301 ^/lastdir$ /lastdir.html

2) 將A目錄重定向到B目錄:
RedirectMatch 301 ^/dir_a$ /dir_b

3) 將A目錄下所有的文件重定向到B目錄:
RedirectMatch 301 ^/dir_a/.* /dir_b

4) 將A目錄下所有的文件重定向到B目錄相對應的文件:
RedirectMatch 301 ^/dir_a/(.*) /dir_b/$1
$1表示上面圓括弧中的變量,如果有多個圓括弧,則按順序為 $2,$3

5) 將A目錄下所有的文件重定向到B服務器的C目錄相對應的文件:
RedirectMatch 301 ^/dir_a/(.*) http://www.b.com/dir_c/$1
這個對有些原先使用個人空間,而現在有了自己的服務器或者虛擬主機的人來說非常有用,
比如原先是 www.wz.zj.cn/~mypage
而現在有了www.myweb.com 這個空間
那仍N可以在原個人空間的目錄下編輯 .htaccess 加入:
RedirectMatch 301 ^/~dir_a/(.*) http://www.mypage.com/$1
如果域名發生變更,可以這樣:
RedirectMatch 301 ^(.*) http://www.newdomaim.com/$1


說明:
符號 ^ 表示匹配項的開始, 符號 $ 表示結束,符號 * 代表通配符,符號 () 定義變量,$1, $2 為變量名。
301是狀態碼,表示永久重定向,另外還有:
302,臨時重定向,如果不寫狀態碼,則這個就是默認值。
303,系統會有一個頁面,指出資源地址已經改變。
410,表示資源地址已經永久刪除

【下列文章您可能也有興趣】

沒有留言: