mod_vhost_alias и VirtualDocumentRoot: как добавить предпоследнюю и последнюю часть?

Как получить имя каталога, состоящее из двух последних частей имени домена. Или использовать точку?

Например, у меня есть домен any.ms, и мне бы хотелось, чтобы динамические домены foo.any.ms и домен bar.any.ms также указывали на каталог /var/www/dev/any.ms/public. Или домен any.lorem.ipsum.ms, указывающий на каталог /var/www/dev/ipsum.ms/public.

Мой ms.conf на данный момент (не работает, apache не запускается):

<VirtualHost *:80>
    ServerAlias *.ms
    VirtualDocumentRoot /var/www/dev/%-2%.%-1/public
    UseCanonicalName Off
    <Directory "/var/www/dev">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

Я использую документацию http://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html но не могу вставить точки, записывающие /%-2.%-1/, /%-2%.%-1/, /%-2\.%-1/.

1 ответ

Решение

Я только что нашел решение:

Если вы хотите включить. (точка) в директиве VirtualDocumentRoot, но она падает с директивой%, вы можете обойти проблему следующим образом:

VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0

Рабочий раствор:

<VirtualHost *:80>
    ServerAlias *.ms
    VirtualDocumentRoot /var/www/dev/%-2.0.%-1.0/public
    UseCanonicalName Off
    <Directory "/var/www/dev">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>
Другие вопросы по тегам