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