Один виртуальный хост Apache преобразуется в индекс /, а остальные - правильно - PullRequest
0 голосов
/ 18 апреля 2020

У меня возникают проблемы при попытке решить проблему с третьим виртуальным хостом. Третий виртуальный хост всегда преобразуется в индекс /.

Localhost и eshop.lh правильно разрешают свои собственные индивидуальные индексные файлы.

ОБНОВЛЕНИЕ 1 Я добавил еще один test vHost, это также не разрешает правильно и обслуживает индекс /. Удаление eshop и localhost не меняет это поведение.

ОБНОВЛЕНИЕ 2 Изменена конфигурация уровня журнала для отладки.

Полученные ошибки не совпадают с ServerName, но, похоже, это происходит в конфигурациях SSL 433 VHost. Имена и пути правильные, без опечаток.

[ssl:debug] [pid 14388:tid 1924] ssl_engine_kernel.c(2364): [client 127.0.0.1:54023] AH02044: No matching SSL virtual host for servername engine.lh found (using default/first virtual host)

Затем устанавливается соединение по умолчанию (сервер www.example.com: 443), которое первым настраивает (по умолчанию) SSL VHost в httpd-ssl.conf. файл.

В качестве теста я подделал имя_сервера для eshop.lh, чтобы посмотреть, будет ли он также служить по умолчанию для SSL Vhost, но это не так. Он обслуживает меня localhost, который является первой конфигурацией Vhost для порта 80.

Конфигурация Vhost: отображение поддельного eshop.lh и включая 433 конфигурации, которые я пропустил ранее.

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server localhost (C:/xampp/apache/conf/extra/httpd-vhosts.conf:46)
         port 80 namevhost localhost (C:/xampp/apache/conf/extra/httpd-vhosts.conf:46)
         port 80 namevhost engine.lh (C:/xampp/apache/conf/extra/httpd-vhosts.conf:53)
         port 80 namevhost test.lh (C:/xampp/apache/conf/extra/httpd-vhosts.conf:60)
         port 80 namevhost eshot.lh (C:/xampp/apache/conf/extra/httpd-vhosts.conf:67)
*:443                  www.example.com (C:/xampp/apache/conf/extra/httpd-ssl.conf:121)

ОБНОВЛЕНИЕ 3 Переустановил xampp и теперь он работает нормально.

Моя конфигурация:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/localhost"
    ServerName localhost
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/eshop.lh/"
    ServerName eshop.lh
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/engine.lh/"
    ServerName engine.lh
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
</VirtualHost>


127.0.0.1 localhost
::1 localhost
127.0.0.1 eshop.lh
127.0.0.1 engine.lh

На моем пути верны machine.

Это engine.lh, который не может решить правильно. eshop.lh отлично работает.

Файл в каталоге engine.lh просто:

read.me index. html

Вызов httpd -t -D DUMP_VHOSTS выдаёт:

*:80                   is a NameVirtualHost
         default server localhost (C:/xampp/apache/conf/extra/httpd-vhosts.conf:44)
         port 80 namevhost localhost (C:/xampp/apache/conf/extra/httpd-vhosts.conf:44)
         port 80 namevhost eshop.lh (C:/xampp/apache/conf/extra/httpd-vhosts.conf:52)
         port 80 namevhost engine.lh (C:/xampp/apache/conf/extra/httpd-vhosts.conf:60) 

Я перезагружаю apache с помощью: hpptd -k restart или через панель управления.

В apache docs: поддержка виртуальных хостов на основе имен приведен пример для обслуживания различных vhosts:

<VirtualHost *:80>
    # This first-listed virtual host is also the default for *:80
    ServerName www.example.com
    ServerAlias example.com 
    DocumentRoot "/www/domain"
</VirtualHost>

<VirtualHost *:80>
    ServerName other.example.com
    DocumentRoot "/www/otherdomain"
</VirtualHost>
...