Apache-2.2

重定向 301 或 RedirectMatch 301 對我不起作用

  • June 20, 2010

所以這是我的場景:

我有 1 個靜態 IP 和 2 個伺服器。一台伺服器是 Web 伺服器,另一台是郵件伺服器。我有一個路由器作為硬體防火牆,所有埠都設置為需要直通到內部 IP 地址。

如果使用者鍵入 URL http://www.domain.com>,他們會看到該網站。如果使用者想要訪問網路郵件,他們輸入網址<http://mail.domain.com>但仍會看到<http://www.domain.com

我已將 webmail 域設置為可通過郵件伺服器上的埠 8080 訪問,如果使用者鍵入 url http://mail.domain.com:8080>它沒有問題但<http://mail.domain.com沒有問題.

所以這是我的問題:

在我的 httpd.conf 中,我想設置一個重定向 301,以便當使用者輸入http://mail.domain.com>時,他們會被重定向到<http://mail.domain.com:8080

我不想使用 .htaccess 並將指令保留在 httpd.conf

謝謝…

您需要在主 Web 伺服器上創建一個虛擬主機,以響應對“mail.domain.com”地址的 Web 請求。查看Apache 網站上基於名稱的虛擬主機文件。您還需要一個 mod_rewrite 規則來進行重定向。您的配置將如下所示:

NameVirtualHost *:80
&lt;VirtualHost *:80&gt;
 ServerName mail.domain.com
 RewriteEngine On
 RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L]
&lt;/VirtualHost&gt;

至少有兩種方法可以做到這一點:

  1. www.domain.com創建 2 個虛擬主機,一個為 mail.domain.com 創建一個,然後將 RedirectMatch 指令放入第二個。

您還可以在 mail.domain.com 虛擬主機中使用ProxyPass指令,使其像反向代理一樣工作,並讓 mail.domaine.com:80 直接工作而無需重定向 2. 像這樣使用 mod_rewrite 僅重定向具有類似規則的 mail.domain.com url

RewriteCond %{HTTP_HOST} ^mail.domain.com$

$$ NC $$

RewriteRule ^(.*) http://mail.domain.com:8080/ $1$$ R=301 $$ 使用 mod_rewrite 您還可以使用類似規則的反向代理(mail.domain.com 應解析為內部 IP)

RewriteCond %{HTTP_HOST} ^mail.domain.com$

$$ NC $$

RewriteRule ^(.*) http://mail.domain.com:8080/ $1$$ P $$

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