Поточна стабільна версія Apache (2.2) не має такої функції, але 2.4 має директиву IF .
Наразі вам доведеться створити два VirtualHosts, але ви можете встановити деякі речі через глобальні змінні середовища або apache і використовувати це у своєму конфігурації virtualhost (наприклад, встановивши рут документа). Таким чином, якщо ви хочете змінити, ви можете зробити це лише за допомогою одного рядка модифікації.
Звичайно, ви можете використовувати include, щоб зробити щось подібне:
<VirtualHost *:80>
include /etc/apache2/vhost.conf.d/site1
</VirtualHost>
<VirtualHost *:443>
include /etc/apache2/vhost.conf.d/site1
include /etc/apache2/vhost.conf.d/site1-ssl
</VirtualHost>
ps: SNI буде головним роком до адаптації IPv6. Весь основний браузер підтримує його, припускаючи, що ви перебуваєте на підтримуваній ОС.
редагувати: як помічено fooquency, ви не можете поставити SSLEngine у блок If, щоб моя відповідь була неправильною.
SSLEngine On
в<If>
дастьSSLEngine not allowed here
, тому пропонований варіант використання на початку цієї відповіді , до жаль , не представляється можливим. Це, мабуть, пов’язано з тим, що в цьому розділі конфігурації можуть використовуватися лише директиви, що підтримують контекст каталогу. " (ref) іSSLEngine
єserver config, virtual host
(ref) , а не каталог.