Назад | Перейти на главную страницу

Исключение определенных доменов из Apache2 serverAlias ​​при использовании псевдонима catch all * (подстановочный знак)

У меня есть веб-приложение, которое должно поддерживать пользовательские домены, поэтому я настроил следующий виртуальный сервер на основе имени:

<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 ​​...

Возможно, это не лучший способ, но я ищу помощь, чтобы найти лучший (относительно простой) способ настроить веб-приложение, которое может перехватывать любые домены, позволяя при этом другие конкретный домены, которые будут перенаправлены в разные приложения.

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>