web-dev-qa-db-ja.com

特定のServerAliasにApacheエイリアスを設定する

現在、私は次のように定義されたVirtualHostを持っています:

<VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias otherdomain.com
    DocumentRoot /var/www/project/
</VirtualHost>

otherdomain.comドメインにのみ影響するエイリアスを作成するにはどうすればよいですか。

Alias /sub /var/www/other

そのため:

http://otherdomain.com/sub -> /var/www/other
http://mydomain.com/sub -> /var/www/project/sub

問題のVirtualHostは実際にはそれほど単純ではないので、このためだけに個別のVirtualHostを作成したくはありません。 VirtualHost内で使用できる条件式などはありますか?次のようなもの:

<VirtualHost *:80>
    ...
    <If ServerName=otherdomain.com>
        Alias /sub /var/www/other
    </If>
</VirtualHost>
5
Tatu Ulmanen

いいえ、Ifでエイリアスを使用することはできません。

If "%{HTTP_Host}

はAliasと互換性がありません。これを使用すると、Apacheが起動せず、エラーメッセージが出力されます。

Alias not allowed here

対応する名前で別のVirtualHostを作成し、エイリアスで構成する必要があります。

4
Julien Ricard

Apacheドキュメントの関連ビットは次のとおりです。

http://httpd.Apache.org/docs/trunk/mod/core.html#if

そして

http://httpd.Apache.org/docs/trunk/expr.html

その場合、次のようなものが機能するはずです。

<If "%{HTTP_Host} == 'example.com'">
    Alias /sub /var/www/other
</If>

「If」機能にはApache2.2以降が必要になると思います。

1
cjc