本文旨在提供如何用apache重寫規則來解決一些常見的url重寫方法的問題,通過常見的
例項給使用者一些使用重寫規則的基本方法和線索。
二:為什麼需要用重寫規則?
乙個**,如果是長期需要放在internet上提供服務,必定會有不斷地更新和維護,如臨
時轉移到其它伺服器進行維護,重新組織目錄結構,變換url甚至改變到新的網域名稱等等,
而為了讓客戶不會因此受到任何影響,最好的方法就是使用apache rewrite rule(重寫
規則)。
三: 重寫規則的作用範圍
1) 可以使用在apache主配置檔案httpd.conf中
2) 可以使用在httpd.conf裡定義的虛擬主機配置中
3) 可以使用在基本目錄的跨越配置檔案.htaccess中
四:重寫規則的應用條件
只有當使用者的web請求最終被導向到某台web伺服器的apache後台,則這台web伺服器接受
進來的請求,根據配置檔案該請求是主配置還是虛擬主機,再根據使用者在瀏覽器中請求的
uri來配對重寫規則並且根據實際的請求路徑配對.htaccess中的重寫規則。最後把請求
的內容傳回給使用者,該響應可能有兩種:
1) 對瀏覽器請求內容的外部重定向(redirect)到另乙個url。
讓瀏覽器再次以新的uri發出請求(r=301或者r=302,臨時的或是永久的重定向)
成了新的網域名稱
則把舊的網域名稱重定向到新的網域名稱(redirect)
2) 也可能是由apache內部子請求**產生新的內容送回給客戶[p,l]
這是apache內部根據重寫後的uri內部通過**模組請求內容並送回內容給客戶,而客戶
端瀏覽器並
不知道,瀏覽器中的uri不會被重寫。但實際內容被apache根據重寫規則後的uri得到。
如:在公司防火牆上執行的apache啟動這種**重寫規則,**對內部網段上的web服務
器的請求。
五:重寫規則怎樣工作?
我們假定在編譯apache時已經把mod_rewrite編譯成模組,確信你的httpd.conf中有
loadmodule rewrite_module libexec/mod_rewrite.so
並且在addmodule中有
addmodule mod_rewrite.c
則可以使用重寫規則。
當外部請求來到apache,apache呼叫重寫規則中的定義來重寫由使用者瀏覽器指定請求的
uri,最後被重寫的uri如果是重定向,則送由瀏覽器作再一次請求;如果是**則把重寫
後的uri交給**模組請求最終的內容(content),最後把內容送回給瀏覽器。
六: 何時使用.htaccess中的重寫規則定義?
假如你對你的的**內容所在的伺服器沒有管理員許可權,或者你的**放在isp的伺服器
上託管等等條件下,你無法改寫主配置檔案,然而你可以對你的web站點內容所在的目錄
有寫許可權,則你可以設定自己的.htaccess
檔案達到同樣的目的。但你需要確定主配置檔案中對你的**所在的目錄定義了下面的內
容: options indexes followsymlinks
allowoverride all
否則你的.htaccess不會工作。
Apache重寫規則解析
htaccess的主要作用就是實現url改寫,也就是當瀏覽器通過url訪問到伺服器某個資料夾時,作為主人,我們可以來接待這個url,具體地怎樣接待它,就是此檔案的作用。所有的訪問都是通過url實現,所以.htaccess的作用非同小可。正因為此,所以一般地 通過設 置.htaccess,通過乙個十分...
apache重寫規則簡單理解
1 前提 開啟apache重寫,並把httpd.conf裡的相關的allowoverride denied改為allowoverride all 2 重寫規則可寫在專案根目錄的.htaccess檔案或直接配在httpd.conf 3 規則的三個重點 rewriteengine on 開啟引擎 rew...
Apache的URL重寫規則的標誌詳細說明
apache的url重寫規則的標誌詳細說明 1 r code force redirect 強制外部重定向 強制在替代字串加上http thishost thisport 字首重定向到外部的url.如果code不指定,將用預設的302 http狀態碼。2 f force url to be forb...