Apache VirtualHost и localhost

Я работаю с XAMPP на Mac OS X. Я пытаюсь правильно запустить сайт symfony для клиента, я действительно не знаю (пока) symfony, я просто хочу установить и запустить его.

Я изменил свой etc / hosts таким образом:

127.0.0.1 www.mysite.local       

и httpd.конф таким образом:

<VirtualHost *:80>
  ServerName www.mysite.local
  DocumentRoot /Applications/MAMP/htdocs/mysite/web
  DirectoryIndex index.php
  <Directory /Applications/MAMP/htdocs/mysite/web>
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf
  <Directory "/Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

теперь сайт работает (yay!), но я больше не могу получить доступ ни к одному из моих других локальных сайтов, потому что localhost в отображается как www.мистит.местные. Где я ошибаюсь?

спасибо!

11 ответов


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

скажем, например, вы не хотели, чтобы эта страница отображалась. Все, что вы хотите показать, это apache он работает страница, так что вы бы сделать запись vhost перед mysite.local как локальный хост и укажите его на страницу it works.

но это нормально. У меня была эта проблема раньше, так что не волнуйтесь!


это работает для меня!

для запуска таких проектов, как http://localhost/projectName

<VirtualHost localhost:80>
   ServerAdmin localhost
    DocumentRoot path/to/htdocs/
    ServerName localhost
</VirtualHost>

для запуска таких проектов, как http://somewebsite.com локально

<VirtualHost somewebsite.com:80>
     ServerAdmin webmaster@example.com
     DocumentRoot /path/to/htdocs/somewebsiteFolder
     ServerName www.somewebsite.com
     ServerAlias somewebsite.com
</VirtualHost>

же для других сайтов

<VirtualHost anothersite.local:80>
     ServerAdmin webmaster@example.com
     DocumentRoot /path/to/htdocs/anotherSiteFolder
     ServerName www.anothersite.local
     ServerAlias anothersite.com
</VirtualHost>

localhost всегда будет перенаправлять на 127.0.0.1. Вы можете обмануть это, назвав свой другой VirtualHost другим локальным обратным адресом, таким как 127.0.0.2. Убедитесь, что вы также измените соответствующий hosts файл для реализации этого.

например, мой httpd-vhosts.conf выглядит так:

<VirtualHost 127.0.0.2:80>
    DocumentRoot "D:/6. App Data/XAMPP Shared/htdocs/intranet"
    ServerName intranet.dev
    ServerAlias www.intranet.dev
    ErrorLog "logs/intranet.dev-error.log"
    CustomLog "logs/intranet.dec-access.log" combined

    <Directory "D:/6. App Data/XAMPP Shared/htdocs/intranet">
        Options Indexes FollowSymLinks ExecCGI Includes
        Order allow,deny
        Allow from all
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

(обратите внимание, что в Я набрал 127.0.0.2:80. Это означает, что этот блок VirtualHost будет влиять только на запросы к IP-адресу 127.0.0.2 порт 80, который является порт по умолчанию для HTTP.

чтобы направить имя intranet.dev правильно, мой hosts строка ввода выглядит так:

127.0.0.2 intranet.dev

таким образом, это помешает вам создать еще один блок VirtualHost для localhost, что не обязательно.


вы можете использовать этот:

<VirtualHost *:80>
    DocumentRoot "somepath\Apache2.2\htdocs"
    ServerName localhost 
</VirtualHost>
<VirtualHost *:80>

как ваш первый виртуальный хост (поместите его перед другим vhosts)


у меня была такая же проблема доступа к localhost при работе с virtualHost. Я решил, добавив имя в virtualHost listen code, как показано ниже -

в своем хозяева файл, я добавил ниже код (C:\Windows\System32\drivers\etc\hosts) -

127.0.0.1       main_live

и в моем httpd.conf я добавил ниже код -

<VirtualHost main_live:80>
    DocumentRoot H:/wamp/www/raj/main_live/
    ServerName main_live
</VirtualHost>

вот именно. Это работает, я могу использовать оба localhost в, phpMyAdmin и, as также main_live(мой виртуальный проект) одновременно.


для кого-то, кто делает все описанное здесь и все еще не может получить доступ:
Xampp с apache 2.4:

на httpd-vhost.conf

<VirtualHost *>
    DocumentRoot "D:/xampp/htdocs/dir"
    ServerName something.dev
   <Directory "D:/xampp/htdocs/dir">
    Require all granted #apache v 2.4.4 uses just this
   </Directory>
</VirtualHost>


нет необходимости в порту или ip здесь, apache настроить его на свои собственные файлы. Нет необходимости в NameVirtualHost *: 80, его устарел, вы можете использовать его, но не имеет значения.

затем для редактирования хостов,вы должны запустить Блокнот от имени администратора (описано ниже), если вы редактируете файл без этого вы редактируете псевдо-файл, а не оригинал (да, он сохраняет и дерьмо, но это не настоящий файл)
В windows:

найти значок Блокнота, щелкните правой кнопкой мыши, запустите от имени администратора, откройте файл, перейдите к c:/windows/system32/driver/etc/hosts, проверьте "просмотреть все файлы", откройте hosts.

Если вы редактировали его раньше, вероятно, вы увидите его не тот файл, который вы ранее редактировали, когда не работали как администратор.

потом проверьте, читает ли Apache ваш httpd-vhost.conf , перейдите в xampFolder / apache / bin, shift + щелкните правой кнопкой мыши, откройте команду терминала здесь, откройте xampp (как обычно), запустите apache, затем в командной строке введите httpd - S, вы увидите список виртуальных хостов, просто проверьте, если Ваш что-то.Дев там.


дополнительное описание для John Smith answer из официальной документации. Чтобы понять, почему это.

главный хост уходит

если вы добавляете виртуальные хосты на существующий веб-сервер необходимо также создайте блок для существующего хоста. Этот Имя_сервера и DocumentRoot, включенные в этот виртуальный хост, должны быть та же глобальная servername и DocumentRoot так. Список этот виртуальный хост сначала в файле конфигурации, чтобы он действовал как хост по умолчанию.

например, чтобы правильно работать с XAMPP, чтобы предотвратить переопределение основного хоста VirtualHost, добавьте следующие строки в httpd-vhosts.conf

# Main host
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/xampp/htdocs"
</VirtualHost>

# Additional host
<VirtualHost *:80>
    # over directives there
</VirtualHost>

согласно этой документации:поддержка виртуальных хостов на основе имен

возможно, отсутствует следующая директива:

NameVirtualHost *:80

просто изменить <VirtualHost *:80> до <VirtualHost 127.0.0.1:80>.

по умолчанию DocumentRoot будет служить для всех доменов или IPs, которые указывают на ваш сервер и указанный VirtualHost будет работать.


Это может быть потому, что ваша веб-папка (как уже упоминалось " / Applications/MAMP/htdocs/mysite/ web") является пустым.

мое предложение-сначала сделать ваш проект, а затем работать над созданием виртуального хоста. Я пошел с подобной ситуацией. Я использовал пустую папку в DocumentRoot на httpd-vhosts.confiz и я не могу получить доступ к моему shahg101.com Сайт


Я с Ubuntu 16.04, это то, что сработало для меня:

  1. откройте терминал и cd в /etc/apache2/sites-available. Там вы найдете файл под названием 000-default.conf.
  2. скопируйте этот файл: cp 000-default.conf example.local.conf
  3. Откройте этот новый файл (я использую Nano; используйте то, что вам удобно).
  4. вы увидите много прокомментированных строк, которые вы можете удалить.
  5. изменить <VirtualHost *:80> to <VirtualHost example.local:80>
  6. измените корень документа, чтобы отразить расположение ваших файлов.
  7. добавить следующую строку: ServerName example.local и, если нужно, добавьте эту строку: ServerAlias www.example.local
  8. сохраните файл и перезапустите Apache: service Apache2 restart

откройте браузер и перейдите к example.local. Вы должны увидеть свой сайт.