重定向 301 或 RedirectMatch 301 對我不起作用
所以這是我的場景:
我有 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 <VirtualHost *:80> ServerName mail.domain.com RewriteEngine On RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L] </VirtualHost>
至少有兩種方法可以做到這一點:
- 為 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 $$