Я запускаю 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 может обслуживать данные из него. Все, что вам нужно сделать, это сделать его корневым каталогом для виртуального хоста (как у вас).