1

У меня есть следующий файл конфигурации на моей машине Debian:

<VirtualHost *:80>
    ServerAdmin me@domain.tld

    VirtualDocumentRoot /var/workspace/www/%2_%3/%1

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>

    <Directory /var/workspace/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Что отлично подходит для автоматизации - я просто создаю каталог по определенному пути, а домен просто начинает работать.

Но иногда мне нужно запускать приложения, в которых есть документация где-то еще (обычно www dir или что-то еще), как мне указать этот VirtualHosts и продолжить работу старых автоматических VirtualHosts?

Когда я добавляю, например, это:

<VirtualHost *:80>
  ServerName www.phabricator.com.local
  DocumentRoot /var/workspace/www/phabricator_com/www/webroot

  RewriteEngine on
  RewriteRule ^/rsrc/(.*)     -                       [L,QSA]
  RewriteRule ^/favicon.ico   -                       [L,QSA]
  RewriteRule ^(.*)$          /index.php?__path__=$1  [L,QSA]

  SetEnv PHABRICATOR_ENV custom/socialbakers
</VirtualHost>

Он направляет все запросы в /var/workspace/www/phabricator_com/www/webroot и игнорирует других vhosts (упомянутых выше).

Зачем?

2 ответа2

1

Обязательно включите директиву, чтобы разрешить именованные виртуальные хосты. Я имею в виду:

NameVirtualHost *:80

... в вашем файле /etc/httpd/conf/httpd.conf.

0

Вы уверены, что указали правильное имя после ServerName? Я имею в виду, это заканчивается .local ; это то, что содержит заголовок Host HTTP-запроса? Если заголовок Host в HTTP-запросе не соответствует ни одному из vhosts, основанных на имени (или если в запросе нет заголовка Host ), будет использован первый vhost.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .