Назад | Перейти на главную страницу

Apache: сопоставление (под) домена с каталогами без изменения корневого каталога документов

Я установил корневой каталог документа следующим образом: var / www / html

Я пытаюсь сделать следующее:

cms.domain.com -> var / www / html / cms

domain.com -> var / www / html / cms / sites / site1

Я пытаюсь добиться этого с помощью виртуальных хостов. Проблема в том, что я не могу установить VirtualDocumentRoot для каждого (под) домена, потому что сайты используют кучу скриптов и конфигураций, расположенных в var / www / html / includes, которые должны оставаться закрытыми, и приложения вызывают их с помощью $ _SERVER ["корень_документа"].

Я пробовал вот что:

<VirtualHost *:80>  
    ServerName domain.com
    ServerAlias *.domain.com
    ServerAlias www.domain.com
    AliasMatch ^(.*)$ /cms/sites/site1/

    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <IfModule mod_dir.c>
        DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
    </IfModule>
</VirtualHost>

и для поддомена:

<VirtualHost *:80>      
    ServerName cms.domain.com
    ServerAlias *.cms.domain.com

    AliasMatch ^(.*)$ /cms/

    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <IfModule mod_dir.c>
        DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
    </IfModule>
 </VirtualHost>

Не работает. Я предполагаю, что на самом деле я ищу что-то, чтобы добавить путь после documentroot, сохраняя при этом documentroot, как есть.

Здесь много конфликтующих конфигураций. Я бы предложил создать VirtualHost для domain.com и www.domain.com и еще один для *.domain.com и / или * .cms.domain.com с AliasMatch. Также есть приоритет в VirtualHosts поэтому domain.com должен быть последним.

Самый простой способ решить общую проблему с конфигурацией - использовать символическую ссылку /var/www/html/includes каждому VirtualHost каталог, и тогда у вас, по крайней мере, будет последовательность.