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 переменная не исправляет это.

652   2  

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

    Ничего не найдено.