Apache重寫規則實例說明和應用

日期:2008-07-05  作者:喜騰小二  來源:PHPChina


本文旨在提供如何用Apache重寫規則來解決一些常見的URL重寫方法的問題,通過常見的實例給用戶一些使用重寫規則的基本方法和線索。

 

一、為什麼需要用重寫規則
編輯本段

網站的生命在於不斷地進行更新和維護,根據業務發展的需求轉移服務器進行維護、重新組織目錄結構、變換URL甚至改變到新的域名等情況是經常發生的。為了讓客戶不會因此受到任何影響,最好的方法就是使用Apache Rewrite Rule(重寫規則)。

 

二、重寫規則的作用範圍
編輯本段

1.使用在Apache主配置文件httpd.conf中。

2.使用在httpd.conf裡定義的虛擬主機配置中。

3.使用在基本目錄的跨越配置文件.htaccess中。

 

三、重寫規則的應用條件
編輯本段

當用戶的Web請求最終被導嚮到某臺Web服務器的Apache守護進程,Apache根據配置文件判斷該請求是主配置還是虛擬主機,再根據用戶在浏覽器中請求的URL來匹配重寫規則,並且根據實際的請求路徑匹配.htaccess中的重寫規則,最後把請求的內容傳回給用戶。該響應可能有2種。

1.將請求內容外部重定嚮(Redirect)到另一個URL

讓浏覽器再次以新的URL發出請求(R=301或者R=302,臨時的或是永久的重定嚮)。

例如,一個網站有正規的URL和別名URL,對別名URL進行重定嚮到正規URL,或者網站改換成了新的域名,則把舊的域名重定嚮到新的域名。

2.由Apache內部子請求代理產生新的內容送回給客戶[P,L]

這是Apache內部根據重寫後的URL,通過代理模塊請求內容並將最終內容送回給客戶,客戶端浏覽器不必再次請求,浏覽器中的URL不會被重寫,但實際內容由Apache根據重寫規則後的URL生成。

例如,在公司防火牆上運行的Apache啓動這種代理重寫規則,代理對內部網段上的Web服務器的請求。

fasdfadsf

四、重寫規則怎樣工作
編輯本段

我們假定在編譯Apache時已經把mod_rewrite編譯成模塊,確信您的httpd.conf中有LoadModule rewrite_module libexec/mod_rewrite.so,並且在Addmodule中有Addmodule mod_rewrite.c,則可以使用重寫規則。

當外部請求到達Apache,Apache調用重寫規則中的定義來重寫由用戶浏覽器指定請求的URL,最後被重寫的URL如果是重定嚮,則送交浏覽器做再一次請求;如果是代理則把重寫後的URL交給代理模塊請求最終的內容(Content),最後把內容送回給浏覽器。

五、何時使用.htaccess中的重寫規則定義

編輯本段

假如您對網站內容所在的服務器沒有管理員權限,或者您的網站內容放在ISP的服務器上托管,無法改寫主配置文件,但是您對Web站點內容所在的目錄有寫權限,則可以設置自己的.htaccess文件達到同樣的目的。但您需要確定主配置文件中對您的網站所在的目錄定義了下麵的內容,否則您的.htaccess不會工作。

<<<返回技術中心

技術文章

站內新聞

我要啦免费统计