2016-07-24 19 views
0

私はApacheのリライトルールが比較的新しいです。私がする必要があること私は比較的簡単にすべきだと思っていますが、私は少しの助けを必要とします。Apache:ServerNameが一致しないリクエストをリダイレクト

新しいフィーチャブランチをテストするためにApache設定で定義されたいくつかの名前ベースの仮想ホストがあり、トラフィックを誘導するためのワイルドカードDNS CNAME設定があります。

仮想ホストのいずれかのServerNameと要求が一致した場合、すべてが正常に動作します。ただし、要求内のホスト名が明示的に定義された仮想ホストと一致しない場合は、自動的に最初の仮想ホストが使用されます。

実際にはそうではないにしても、開発者が正しい仮想ホストにアクセスしていると思うかもしれないので、これはかなり混乱しています。

最初の仮想ホストに書き換えルールを定義して、要求のホスト名が定義された「ServerName」と正確に一致しない場合はリダイレクトするようにします。

例えば

...

私はそうのように定義された2つの仮想ホスト...

<VirtualHost *:443> 

    ServerName default.mydomain.com 
    ... 

</VirtualHost> 

<VirtualHost *:443> 

    ServerName my-feature-1.mydomain.com 
    ... 

</VirtualHost> 

を持っており、開発者は新しい機能のためのサイトを要求しようとしているが、誤ってスペルされた場合、すなわち

​​

最初のバーチャルホストは静かに要求にサービスを提供し、彼らがどれも賢くなり、そしてなぜthei不思議に思うかもしれませんr新しいフィーチャーコードが機能していないようです。

代わりに何をしたいですか?それは彼らがURLをmisstypedき明らかだように、私は

https://default.mydomain.com

...にリダイレクトしたいと思います。

+0

仮想ホストはgitブランチから動的に生成されるので、ホスト名は何でもかまいません。私はそれを行うための一般的な方法が必要です。 – user1751825

+0

私はあなたが誤解していると思います。例えば、 http://serverfault.com/questions/82306/apache-default-catch-all-virtual-host静的でcatchallである_one_vhostを持っていて、その後に動的なものを定義します。 – AD7six

+0

ありがとう@ AD7six私は今理解しています。私はそれが提案されたように働いている。 – user1751825

答えて

1

私はこれを明示的に、後続の動的な仮想ホストにマッチしていないすべての要求のデフォルトとして動作しますが、また

RewriteCond %{HTTP_HOST} "!^default\.mydomain\.com" [NC] 
RewriteRule ^/(.*)   https://default.mydomain.com [L,NE,R=301] 

...それは最初の仮想ホストで以下の書き換えルールで動作するように持っています優先するデフォルトURLにリダイレクトします。私は実際には未定義のURLのコンテンツを提供したくありません。

わずかに改善する唯一のことは、ルールでドメイン名を複製する必要がないことです。

関連する問題