Redirect 301 或 RedirectMatch 301 對我不起作用

Redirect 301 或 RedirectMatch 301 對我不起作用

這是我的場景:

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

如果用戶輸入 urlhttp://www.domain.com他們看到該網站。如果使用者想要存取網路郵件,則輸入 urlhttp://mail.domain.com但仍然看到http://www.domain.com

我已將 Webmail 網域設定為可透過郵件伺服器上的連接埠 8080 訪問,並且如果使用者鍵入 urlhttp://mail.domain.com:8080它工作沒問題,但不適合http://mail.domain.com

所以這是我的問題:

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

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

謝謝...

答案1

您需要在主 Web 伺服器上建立一個虛擬主機,以回應對「mail.domain.com」位址的 Web 請求。看看基於名稱的虛擬主機Apache 網站上的文件。您還需要 mod_rewrite 規則來執行重新導向。你的配置看起來像這樣:

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

答案2

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

  1. 創建2個虛擬主機一個用於 www.domain.com,另一個用於 mail.domain.com,然後將 RedirectMatch 指令放入第二個指令中。
    您也可以使用代理通行證mail.domain.com 虛擬主機中的指令,使其像反向代理一樣工作,並使 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]

相關內容