基本的に、:443のすべてのリクエストを:443にリダイレクトしようとしています。私はこれを行う方法を見つけました。これは非常にうまく機能します。訪問者がSSLアラートを破棄すると(もちろん、私の証明書は私のIPに対して有効ではありません)、彼は正しくリダイレクトされます。
<VirtualHost *:443>
SSLEngine off
ServerAdmin [email protected]
ServerName 11.11.11.11
Redirect Permanent / https://domain.eu/
</VirtualHost>
しかし、今日はサーバーでIPv6を有効にしたので、それもリダイレクトしたいのですが、問題はここから始まります。
<VirtualHost *:443>
SSLEngine off
ServerAdmin [email protected]
ServerName [ff:ff:8:ff::1] //(with or without '[]')
Redirect Permanent / https://domain.eu/
</VirtualHost>
それは単に機能しません。 ServerName引数でIPv6のサポートが欠落していることが原因かどうかはわかりませんが、ちょっと行き詰まっています。
何か考えはありますか?ありがとう!
私の知る限り、ServerNameディレクティブはIPv6アドレスを許可していません。
IPv6アドレスの角かっこやコロン文字は受け入れられません。
この形式は、Listen、NameVirtualHost、およびVirtualHostディレクティブにのみ有効です。
構成に応じて(つまり、同じApacheインストールで複数のドメインをサーバー化する場合)、次のことを試すことができます。
通常どおりに仮想ホストを作成し、IPv6アドレスでServerNameを定義する代わりに、適切なDNS名(実際に存在する必要はありません)で定義します。
ここでの秘訣は、このvhostをそのIP:Portの他のすべてのvhostの上に配置することです。
そうすれば、ユーザーがApacheで処理されていないドメイン(またはこの場合はIP)を要求すると、そのIP:Portで最初に見つかったVirtualHostを使用して要求を処理しようとします。
まず、「[」および「]」はDNS命名規則には無効であり、ServerName値で満たす必要があります。次に、「:」も無効です。そのため、その記号なしで使用するか、ホスト名を使用してみてください。2番目の方法の方が適しています。
これを試しましたか?
Listen [ff:ff:8:ff::1]:80;
<VirtualHost [ff:ff:8:ff::1]:443>
SSLEngine off
ServerAdmin [email protected]
Redirect Permanent / https://domain.eu/
</VirtualHost>
リスニングアドレスに応じてリクエストを処理します。