В настоящее время у меня 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 на самом деле не так прост, поэтому я бы предпочел не создавать отдельные VirtualHosts только для этого. Есть ли какие-либо условные выражения или аналогичные, которые я могу использовать внутри VirtualHost? Что-то вроде:
<VirtualHost *:80>
...
<If ServerName=otherdomain.com>
Alias /sub /var/www/other
</If>
</VirtualHost>
Нет, вы не можете использовать псевдоним в If.
If "%{HTTP_HOST}
несовместима с псевдонимом, его использование приведет к тому, что 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>
Я считаю, что вам понадобится Apache 2.2 или выше для функциональности «Если».