
これが私のシナリオです:
静的 IP が 1 つとサーバーが 2 つあります。1 つのサーバーは Web サーバーで、もう 1 つはメール サーバーです。ルーターをハードウェア ファイアウォールとして使用しており、すべてのポートが内部 IP アドレスへのパススルーを必要とするように設定されています。
ユーザーがURLを入力するとhttp://www.domain.comそのウェブサイトを見れば、ユーザーがウェブメールにアクセスしたい場合、URLを入力しますhttp://mail.domain.comしかし、それでも見るhttp://www.domain.com
ウェブメールドメインをメールサーバーのポート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にディレクティブを残しておきたい。
ありがとう...
答え1
「mail.domain.com」アドレスのWebリクエストに応答する仮想ホストをメインWebサーバー上に作成する必要があります。名前ベースの仮想ホストApache Web サイトのドキュメントを参照してください。リダイレクトを行うには、mod_rewrite ルールも必要です。設定は次のようになります。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.domain.com
RewriteEngine On
RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L]
</VirtualHost>
答え2
これを行うには少なくとも 2 つの方法があります。
作成 2仮想ホスト
1つはwww.domain.com用、もう1つはmail.domain.com用で、2つ目にRedirectMatchディレクティブを入れます。プロキシパスmail.domain.com 仮想ホストにリバースプロキシのように動作するようにディレクティブを追加し、mail.domaine.com:80 をリダイレクトなしで直接動作させます。次のようなルールでmail.domain.com URLのみをリダイレクトするには、mod_rewriteを次のように使用します。
書き換え条件 %{HTTP_HOST} ^mail.domain.com$ [NC]
書き換えルール ^(.*)http://mail.domain.com:8080/1ドル[R=301]mod_rewriteを使用すると、次のようなルールでリバースプロキシを実行することもできます(mail.domain.comは内部IPに解決される必要があります)。
書き換え条件 %{HTTP_HOST} ^mail.domain.com$ [NC]
書き換えルール ^(.*)http://mail.domain.com:8080/1ドル[P]