すべてをキャッチする*(ワイルドカード)エイリアスを使用しながら、Apache2 serverAliasから特定のドメインを除外する


10

カスタムドメインをサポートする必要があるWebアプリケーションがあります。その点で、次の名前ベースの仮想サーバーをセットアップしました。

<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    RackEnv production
    DocumentRoot /srv/www/example/current/public
    <Directory /srv/www/example/current/public>
             AllowOverride all
             Options -MultiViews FollowSymLinks
    </Directory>
    ErrorLog /srv/www/example/log/error.log
    TransferLog /srv/www/example/log/access.log
</VirtualHost>

*がサーバーエイリアスであることを確認してください。そのサーバー上のすべてのドメインをキャッチします。ただし、このサーバーからこのリストから除外したい他のサイトがあります。ユーザーがこのサービスでserverAliasとして登録するすべてのドメインを手動で設定するよりも、除外するドメインのリストを用意する方が経済的です...

おそらくこれは最善の方法ではありませんが、他の特定のドメインを別のアプリにルーティングできるようにしながら、任意のドメインをキャッチできるウェブアプリを設定するための最良の(比較的単純な)方法で、私は助けを探しています。

回答:


12

Apacheは、ドメインが定義されている順序で一致を検索します。私があなたの問題を正しく理解している場合は、すべてのホストをキャッチする前に除外するホストを定義することで解決できます。

<VirtualHost *:80>
    ServerName excluded.example.com
    ServerAlias  something.example.com ...
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    ...
</VirtualHost>

1
はい、あなたは正しいですが、デフォルトのUbuntu 10.4スタックでこれを行う方法に戸惑っています。そこでは、shenanigans全体が、サイト利用可能およびサイト対応のディレクトリを持つことによって管理され、各仮想ホスト定義は独自の排他的に存在しますファイル...その場合の順序を制御するにはどうすればよいですか?
ビクターS

ファイルはアルファベット順にロードされます(lsのデフォルトのソート順)。
user9517 2011年

1
最初に来る必要があるサイト定義の場合000-excluded.example.com.confは、sites-available dirのように名前を付けます。
ブライアンミントン2014

私はまったく同じことをしようとしていましたが、これは私にはうまくいきません。"ServerName exclude.example.com \ n Redirect / example.com/excluded "を持つexclude.example.com VirtualHostにより、より一般的なVirtualHostへのすべてのリクエストがリダイレクトされました(これは、構成内の特定のVirtualHostに確実に従いました)。
quuxman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.