NameVirtualHost вызывает 404 для localhost - PullRequest
2 голосов
/ 03 марта 2011

Мне удалось настроить несколько виртуальных хостов, включив NameVirtualHost. Вот верхняя часть моего vhosts.conf

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName mysite.local
  ...
</VirtualHost>

Проблема в том, что когда я захожу на http://localhost, я получаю значение по умолчанию «Это работает!». Если я перейду к http://127.0.0.1/, то по умолчанию http://mysite.local

Из документов Apache я понимаю, почему по умолчанию используется mysite.local (соответствует первому VirtualHost). Но раньше я был в состоянии пойти на http://localhost/phpmyadmin/.

Как я могу получить это обратно? Мне нужно сделать мой первый VirtualHost локальный хост? Это кажется неправильным ...

Запуск apache 2.2.15 в Mac OS X (10.6.6).

UPDATE

Если я закомментирую следующие строки из моего файла hosts, и localhost, и 127.0.0.1 перейдут в одно и то же место. Я проверил в журнале доступа, что он действительно использовал :: 1.

::1             localhost
fe80::1%lo0     localhost

Итак, я полагаю, что это решает первую проблему, при условии, что это нормально? Но как я могу заставить localhost перейти на мой DocumentRoot по умолчанию?

Ответы [ 2 ]

3 голосов
/ 29 мая 2012

Как я могу получить это обратно? Мне нужно сделать мой первый VirtualHost локальный хост? Это кажется неправильным ...

Я сделал это так, и все, кажется, работает нормально, без дополнительного порта для прослушивания.

Первый блок VirtualHost обрабатывает любой URL, который не указывает на один из 2-х vhosts (2-й и 3-й блоки VirtualHost), которые я настроил:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/"
    ServerName localhost
    ServerAlias localhost
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/"
    ServerName imputation.loc

    <Directory "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/"
    ServerName documentatiebestand.loc

    <Directory "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
2 голосов
/ 03 марта 2011

Нет, вы не можете смешивать VirtualHosts с «классической» конфигурацией. Вы можете прослушать другой порт и определить другой VirtualHost (например, *: 8080), «эмулирующий» ваш предыдущий «localhost», переходя к вашей общей декларации DocumentRoot.

Примерно так:

Listen 80 (already declared elsewhere)
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080

<VirtualHost *:80>
  ServerName mysite.local
  ...
</VirtualHost>

<VirtualHost *:8080>
  ServerName localhost
  DocumentRoot /same/as/the/classic/one/
  ...
</VirtualHost>

Вы также можете объявить некоторые Alias ​​/ phpmyadmin /, которые будут глобальными, если я не рекомендую псевдонимы, потому что у вас не может быть другой папки phpmyadmin в одном из ваших vhosts.

Конечно, вы можете определить phpmyadmin.local vhost; -)

...