@ ответ Эдди мне очень помог, но мне все же пришлось провести небольшое дополнительное исследование, чтобы решить эту проблему для себя, используя XAMPP на OSX. Я думал, что добавлю свое полное решение здесь для блага потомков.
Сначала я добавил следующие записи в httpd-vhosts.conf (в папке "etc / extra /" в XAMPP):
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Applications/xampp/xamppfiles/htdocs/"
</VirtualHost>
<VirtualHost *:80>
ServerName client1.my-machine
DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client1/"
</VirtualHost>
<VirtualHost *:80>
ServerName client2.my-machine
DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client2/"
</VirtualHost>
Обратите внимание, что я специально использовал подстановочный знак вместо "localhost" для URL-адресов VirtualHost и добавил конфигурацию ServerName, в которой я указал каждое имя субдомена. Также обратите внимание, что я использовал имя моей машины («my-machine») вместо «localhost» - таким образом все запросы от любой машины (не только localhost) могут быть правильно оценены. Я работаю в OSX, но тестирую браузеры на разных виртуальных машинах через Parallels. Используя этот подход, я могу получить доступ к http://client1.my -машина с любой машины или виртуальной машины в моей сети. Если указано «localhost», оно будет работать только на моей машине для разработки.
ПРИМЕЧАНИЕ : первая запись VirtualHost используется по умолчанию (как объяснено здесь: http://httpd.apache.org/docs/2.2/vhosts/name-based.html) и требуется, чтобы запросы по умолчанию не относились к одному из пользовательских сайтов.
Я также добавил настройки разрешений в httpd.conf, как показано в @ Eddie's answer . Это не всегда требуется, но я столкнулся с двумя отдельными случаями, когда мне нужно было внести это изменение:
- Размещение нового сайта в каталоге за пределами корневого каталога XAMPP по умолчанию (в основном для любого пути, который будет доступен через http, должны быть установлены явные разрешения)
- При добавлении правил mod_rewrite для сайта, настроенного в качестве виртуального хоста (по пути http по умолчанию), я получил сообщение об ошибке «.htaccess: RewriteEngine здесь не разрешен». Чтение комментариев в httpd.conf о параметре
AllowOverride
делает причину ошибки очевидной, но я уже упустил это из виду. Изменение этого значения на «Все» исправило ошибку.
Обратите внимание, что при редактировании httpd.conf может потребоваться раскомментировать следующую строку (она была закомментирована для меня по умолчанию), иначе внесенные выше изменения vhosts не вступят в силу:
# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf
Наконец, мне также пришлось добавить собственные доменные имена в мой файл hosts, как отмечено в комментариях выше. В OSX вы делаете это путем редактирования «/ private / etc / hosts» (в Windows это будет «Windows / System32 / drivers / etc / hosts») и добавляете следующие строки:
127.0.0.1 my-machine
127.0.0.1 client1.my-machine
127.0.0.1 client2.my-machine
ПРИМЕЧАНИЕ : В пользовательском интерфейсе OSX Finder по умолчанию скрытые папки (включая / private) не отображаются. Вы можете изменить это навсегда, взломав внутренние параметры Finder (Google для деталей), или, проще говоря, сделать случайные изменения, просто используйте пункт меню «Перейти> Перейти к папке», который позволит вам открывать скрытые папки непосредственно по имени. Лично я использую стороннюю оболочку OSX под названием PathFinder , которую я бы искренне рекомендовал (это стоит небольшой платы за лицензию). Он включает в себя пункт меню, чтобы скрыть / показать скрытые файлы, среди многих других полезных функций.
Одной вещью, которая перетаскивает, является то, что я также должен был добавить соответствующие записи в моем файле хостов Windows VM, указывающие на мою физическую машину разработчика, чтобы URL-адреса разрешались через Apache / OSX:
192.168.1.5 client1.my-machine
192.168.1.5 client2.my-machine
Мне не нужна запись только для имени машины (которая разрешается автоматически), но добавление к ней субдомена не разрешается правильно без этих записей хоста. Иногда случается так, что IP-адреса моего Mac (через DHCP) меняются, но это небольшая неприятность. Я бы предположил, что я мог бы настроить его так, чтобы он не нуждался в этих IP, но я не мог понять это и готов двигаться дальше :) (Если кто-то знает ответ, пожалуйста, оставьте комментарий)
Теперь у меня есть несколько клиентских сайтов, работающих в одном месте и доступных из всех моих сред разработки / тестирования. Надеюсь, это поможет кому-то еще.