Подтвердить что ты не робот

Apache VirtualHost и localhost

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

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

127.0.0.1 www.mysite.local       

и httpd.conf следующим образом:

<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.mysite.local. Где я ошибаюсь?

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

<VirtualHost somewebsite.com:80>
     ServerAdmin [email protected]
     DocumentRoot /path/to/htdocs/somewebsiteFolder
     ServerName www.somewebsite.com
     ServerAlias somewebsite.com
</VirtualHost>

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

<VirtualHost anothersite.local:80>
     ServerAdmin [email protected]
     DocumentRoot /path/to/htdocs/anotherSiteFolder
     ServerName www.anothersite.local
     ServerAlias anothersite.com
</VirtualHost>

Ответ 3

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>

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

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

127.0.0.2 intranet.dev

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

Ответ 4

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

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

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

Ответ 5

Для тех, кто делает все, что описано здесь, и все еще не может получить доступ:
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, его устаревший, вы можете использовать его, но не делайте разницы.

Затем, чтобы отредактировать хосты, , вы ДОЛЖНЫ ЗАПУСТИТЬ ЗАПИСЬ КАК АДМИНИСТРАТОР (ОПИСАНИЕ БЕЛЛА), если вы редактируете файл без этого, вы редактируете псевдофайл, а не оригинал (да, он сохраняет и дерьмо, но это не настоящий файл)
В окнах:

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

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

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

Ответ 6

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

В моем хосте файле я добавил код ниже (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, а также main_live (Мой виртуальный проект).

Ответ 7

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

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

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

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

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

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

Ответ 9

Просто измените <VirtualHost *:80> на <VirtualHost 127.0.0.1:80>.

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

Ответ 10

Возможно, это связано с тем, что ваша веб-папка (как указано "/Applications/MAMP/htdocs/mysite/ web" ) пуста.

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

Ответ 11

Я запускаю Ubuntu 16.04, это то, что сработало для меня:

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

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