Итак, у меня есть 2 файла конфигурации.
mysite.conf
<VirtualHost *:80>
ServerName www.mysite.com
ServerAlias mysite.com *.mysite.com
DocumentRoot /var/www/mysite/www
ErrorDocument 404 /redirect.php
ErrorLog logs/application/mysite.error_log
CustomLog logs/application/mysite.access_log Combined
</VirtualHost>
videoupload.conf
<VirtualHost *:80>
ServerName upload.mysite.com
DocumentRoot /var/www/videouploader/www
ErrorLog logs/application/videoupload.error_log
CustomLog logs/application/videoupload.access_log Combined
</VirtualHost>
Видите ли, у нас есть около 50 возможных поддоменов something.mysite.com, которые выполняют разные функции, но все они обслуживаются из одного корня документа.
Я хотел бы сохранить * .mysite.com там просто потому, что он чище, чем имеет самую длинную в мире линию серверов, плюс он защищает от задержек при попытке использовать bananananan.mysite.com или что-то, что не сработает.
Я прочитал документацию по apache, и на самом деле ничего не было для этого сенарио. Кто-нибудь знает, как это сделать?
Apache ищет совпадения vhost сверху вниз и выполняет первое обнаруженное совпадение. Если вы переименовали videoupload.conf
к 0videoupload.conf
это будет прочитано раньше mysite.conf
и это должно просто работать.
У меня была аналогичная проблема. Решением было удалить доменное имя из заголовков любых других <VirtualHost>
директива. Удалять:
<VirtualHost test.blah.org:443>
ServerName test.blah.org
Заменить:
<VirtualHost *:443>
ServerName test.blah.org
Использование доменного имени в заголовке привело к тому, что apache соответствовал этому виртуальному хосту, а не моему ServerAlias static-*.blah.org
под <VirtualHost *:443>
директива.