Virtualhost для поддомена с Подстановочными знаками и статического поддомена
у меня есть странная ситуация, когда я хочу иметь URL-адреса app1.example.com,example.com и *.example.com все используют другой виртуальный хост. Это то, что у меня есть (кроме example.com потому что это только делает его хуже).
<VirtualHost *>
ServerName app1.example.com
ServerAlias app1.example.com
DocumentRoot = /var/www/app1
# Other configuration for this app here
</VirtualHost>
<VirtualHost *>
ServerName wildcard.example.com
ServerAlias *.example.com
DocumentRoot = /var/www/wildcard
# other configuration for this app here
</VirtualHost>
проблема в том, что они конфликтуют. Тот, кто указан первым, выигрывает. Как я могу разместить как подстановочный виртуальный хост, так и конкретный?
примечание: Я не просто меняется DocumentRoot в конфигурации, так что с помощью mod_rewrite чтобы изменить DocumentRoot переменная не исправляет это.
2 ответов:
<VirtualHost *:80> DocumentRoot /var/www/app1 ServerName app1.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/example ServerName example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/wildcard ServerName other.example.com ServerAlias *.example.com </VirtualHost>должны работать. Первая запись станет по умолчанию, если вы не получите явное совпадение. Так что если бы вы имели app.otherexample.com укажи на него, его бы поймали будь app1.example.com.
подстановочные знаки могут использоваться только в ServerAlias, а не Имя_сервера. Что-то меня в тупик.
для вашего варианта использования, следующее должно быть достаточно
<VirtualHost *:80> ServerAlias *.example.com VirtualDocumentRoot /var/www/%1/ </VirtualHost>есть также дополнительная информация на https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache
Comments