現在、私は次のように定義された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>
いいえ、Ifでエイリアスを使用することはできません。
If "%{HTTP_Host}
はAliasと互換性がありません。これを使用すると、Apacheが起動せず、エラーメッセージが出力されます。
Alias not allowed here
対応する名前で別のVirtualHostを作成し、エイリアスで構成する必要があります。
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以降が必要になると思います。