Apache-2.2
如何使用 Apache 中的代理模組重定向 URL?
這似乎是一個超級基本的問題,但我很難找到一個簡單的解決方案,因此感謝您在此方面的任何幫助和耐心:
我想將我的 Apache 代理伺服器配置為重定向某些 URL,例如,將 www.olddomain.com 的 Web 瀏覽器 HTTP 請求傳遞給代理伺服器,然後將請求路由到發送響應的 www.newdomain.com到代理伺服器,然後將其傳遞回 Web 瀏覽器。
看起來很簡單,但我不知道如何在 Apache 上實現這一點。我知道 Squid/Squirm 提供了這個功能,所以我猜我錯過了一些非常基本的東西。我知道我可以使用 RewriteRule 動態修改 URL 並將其傳遞給代理伺服器,但我實際上想做相反的事情,即代理伺服器接收原始 URL,應用 RewriteRule,然後將 HTTP 請求轉發給新的網址。
希望這是有道理的。提前感謝您的幫助。
從您對我之前回答的評論中,我了解到您正在使用 Apache 作為轉發代理 (
ProxyRequests On
)。您可以使用mod_rewrite
代理通過特定的 URL。你可能在你的 Apache 配置中有這樣的東西:
ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Allow from xx.xx.xx.xx </Proxy>
然後,您必須添加以下內容才能將所有請求代理傳遞
www.olddomain.com/foo
到www.newdomain.com/bar
:RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$ RewriteRule /foo(.*)$ http://www.newdomain.com/bar/$1 [P,L]
這是做什麼的:
- 當向主機發出請求時
www.olddomain.com
,RewriteRule
將觸發。- 這條規則代替
/foo
.http://www.newdomain.com/bar/
- 替換被移交給
mod_proxy
(P
)。- 停止重寫 (
L
)。範例結果:
- 瀏覽器配置為使用您的 Apache 作為代理伺服器。
- 它要求
www.olddomain.com/foo/test.html
.- 您的 Apache 會將其重寫為
www.newdomain.com/bar/test.html
.- 它將從負責的 Web 伺服器請求此頁面。
- 將結果作為
www.olddomain.com/foo/test.html
.