Apache HTTP Server 版本 2.4
這份文件補充了 mod_rewrite
參考文件。它說明如何使用 RewriteRule 的 [P] 旗標將內容代理到其他伺服器。提供多項說明一般場景的食譜。
mod_rewrite 提供 [P] 旗標,它允許網址經由 mod_proxy 傳遞到其他伺服器。這裡提供兩個範例。在其中一個範例中,網址直接傳遞到另外一個伺服器,並以如同是本機網址的方式提供服務。在另一個範例中,我們將找不到的內容代理到後端伺服器。
如要單純將網址對應到另外一個伺服器,我們使用 [P] 旗標,如下所示:
RewriteEngine on RewriteBase "/products/" RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
在第二個範例中,我們只有在無法在本地端找到資源時,才代理請求。這在您從一個伺服器遷移到另一個伺服器,而且不確定是否所有內容都已遷移完畢時很有用。
RewriteCond "%{REQUEST_FILENAME}" !-f RewriteCond "%{REQUEST_FILENAME}" !-d RewriteRule "^/(.*)" "http://old.example.com/$1" [P] ProxyPassReverse "/" "http://old.example.com/"
在每一種情況,我們加入 ProxyPassReverse
指令,以確保任何後端發出的重新導向都能正確傳遞給客戶端。
儘量在任何情況下優先使用 ProxyPass
或 ProxyPassMatch
,而非使用 mod_rewrite。