Apache-2.2

如何使用 Apache 中的代理模組重定向 URL?

  • June 1, 2020

這似乎是一個超級基本的問題,但我很難找到一個簡單的解決方案,因此感謝您在此方面的任何幫助和耐心:

我想將我的 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/foowww.newdomain.com/bar

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule /foo(.*)$ http://www.newdomain.com/bar/$1 [P,L]

這是做什麼的:

  • 當向主機發出請求時www.olddomain.comRewriteRule將觸發。
  • 這條規則代替/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.

引用自:https://serverfault.com/questions/130694