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

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

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

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

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

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

Я пробовал следующее:

<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>

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

0
задан 3 December 2017 в 01:05
1 ответ

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

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

0
ответ дан 5 December 2019 в 07:07

Теги

Похожие вопросы