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

httpd-vhosts.conf - Почему это работает?

Я запускаю Apache 2.28 в Windows 7, и это моя структура каталогов:

C: /

www (который содержит сервер Apache, это бесплатный серверный пакет Web-Developer, его конфигурация по умолчанию - C: / www /)

vhosts

vhosts.1

vhosts.2

и я добавил в httpd-vhosts.conf:

    <Directory C:/www/vhosts.1>   
  Order Deny,Allow   
Allow from all 
</Directory>
   <Directory C:/www/vhosts.2>   
Order Deny,Allow   
Allow from all 
</Directory>

но просто чтобы проверить, что я могу разместить их где угодно, я добавил виртуальный хост, добавил домен в файл HOSTS и поместил его в C: / www (основной веб-корневой каталог).

Это было для последнего добавленного мной домена:

<VirtualHost *:80>
    ServerName  testing-server-win7.co.uk
              ServerAlias  www.testing-server-win7.co.uk
    DocumentRoot /www/testing-server-win7.co.uk
    ErrorLog /www/Apache22/logs/error.log

<Directory "/www/testing-server-win7.co.uk">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

и это сработало, что удивительно.

Почему это так и можно ли разместить их где-нибудь на Apache?

Кстати, это сервер разработки, не открытый для Интернета, хотя компьютер делает есть доступ в Интернет.

Кто-нибудь пробовал это здесь, и у них это сработало?

Спасибо

Я собираюсь предположить, что вам нужно изменить направление косых черт, которые вы используете для c: - это должно быть C: \ вместо того, что у вас есть C: /

Протокол HTTP имеет поле заголовка называется Хост. Это то, что делает возможными виртуальные хосты.

Ваш браузер пытается получить доступ к test-server-win7.co.uk, который ваш файл hosts переводит на соответствующий IP-адрес.
Помимо отправки HTTP-запроса GET на этот IP-адрес, он также отправляет имя хоста (с использованием поля заголовка Host), которое сначала кажется избыточным: «Конечно, сервер знает свое собственное имя».

Apache может прочитать это и выяснить, на какой сайт вы пытаетесь попасть. Затем он обслуживает этот сайт для вас.


Из документация:

The <Directory> and <Files> directives, along with their regex counterparts, apply directives to parts of the filesystem. Directives enclosed in a <Directory> section apply to the named filesystem directory and all subdirectories of that directory.

Другими словами, если вы ссылаетесь на каталог своей файловой системы с <Directory> в файле конфигурации, Apache может обслуживать данные из него. Все, что вам нужно сделать, это сделать его корневым каталогом для виртуального хоста (как у вас).