2

ОК, у меня проблемы ... и все хуже и хуже!

Я на Windows 7, работает под управлением XAMPP. Я определил множество поддоменов на localhost для разных веб-проектов; т.е. xyz.localhost, abc.localhost и т. д. Они работали нормально. Я добавляю каждый поддомен в два этапа:

  1. Я добавляю в httpd-vhosts.conf который выглядит следующим образом:

    <VirtualHost *>
        DocumentRoot "path/to/xampp/htdocs/xyz"
        ServerName xyz.localhost
    </VirtualHost>
    
  2. Я добавляю в свой файл hosts запись (C:\Windows\System32\drivers\etc\hosts), которая выглядит следующим образом:

    127.0.0.1 xyz.localhost
    

Затем я перезагружаю Apache. Bam. Это всегда работало, и мне не нужно было разбираться во внутренних принципах работы этих файлов.

Сегодня я включил компьютер и обнаружил, что все мои субдомены localhost вдруг не работают. Chrome и Firefox говорят, что не могут их найти. Тем не менее, я все еще мог получить доступ к http://localhost , и я мог также получить доступ к папкам поддоменов, используя http://127.0.0.1/xyz .

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

VirtualHost _default_:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

Поэтому я просмотрел файлы и обнаружил, что в httpd-ssl.conf есть раздел, начинающийся с <VirtualHost _default_:443> . Однако этот файл не изменялся годами, так что это, вероятно, не проблема.

Я попытался изменить мой файл httpd-vhosts.conf :

  • от NameVirtualHost * до NameVirtualHost *:80 , и
  • <VirtualHost *> до <VirtualHost *:80>

но это не сработало.

Так что случайно я подумал, может быть, я бы добавил Listen 443 в httpd.conf . Это сделало так, чтобы Apache больше не запускался, поэтому я вынул его.

В чем дело?? Что могло измениться? Спешу добавить, что я даже не знаю, какое значение имеет порт 443 для XAMPP. Я никогда не захожу на свои локальные сайты с использованием SSL, и мне это не нужно. Может кто-нибудь мне помочь? Я ковыряюсь в темноте.

2 ответа2

3

Для тех, кто не хочет беспокоиться о погоне за диким гусем в этой теме, позвольте мне подвести итог проблемы и ее решения. :)

Я внезапно не смог получить доступ к каким-либо поддоменам, которые я создал на локальном хосте, используя XAMPP. Я знал, что они были настроены правильно, потому что они работали в течение длительного времени до проблемы.

Проблема оказалась в моем файле hosts (C:\Windows\System32\drivers\etc\hosts). Этот файл предназначен для ручного ввода пар IP-адрес / имя хоста, минуя DNS-сервер, и его необходимо редактировать при добавлении субдомена в localhost (см. Мой вопрос о том, как это сделать). Файл hosts довольно требователен к форматированию, и я понял, что что-то изменило окончание строк в этом файле с CRLF (стандартная Windows) на CRCR . Я визуально заметил, что файл выглядел с двойным интервалом, но я не понял причину, пока не посмотрел гекс и не увидел 0d0d повсюду. Мне удалось исправить окончание строк в Sublime Text, и все снова было счастливым.

Я подозреваю, что файл был испорчен Cisco AnyConnect Secure Mobility Client. Это последняя итерация VPN-клиента Cisco AnyConnect VPN, которую я недавно установил для доступа к VPN-клиенту. Я заметил новую строку в моем файле hosts, в которой указан IP этого VPN, и я думаю, что когда приложение Cisco добавило эту строку, оно исказило окончание строк всего файла. Моя теория.

Спасибо, Уэйн, за помощь в решении проблемы.

0

Согласно моим комментариям выше.

  1. Скачал xampp v1.8.3-3 и установил в C:\XAMPP
  2. Создано 3 папки в C:\XAMPP\htdocs\xampp (site1, site2, site3).
  3. Создан фиктивный файл index.htm во всех трех папках просто с названием сайта
  4. Отредактировал C:\XAMPP\Apache\conf\extra\httpd-vhosts.conf и сделал так

NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/xampp"
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/xampp/site1"
Имя_сервера site1.localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/xampp/site2"
Имя_сервера site2.localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/xampp/site3"
Имя_сервера site3.localhost
</VirtualHost>

  1. Запустил командную строку как администратор
  2. Отредактированные хосты через: блокнот c:\windows\system32\drivers\etc\hosts
  3. Добавлены следующие строки

127.0.0.1 site1.localhost
127.0.0.1 site2.localhost
127.0.0.1 site3.localhost

  1. Запустил apache через панель управления XAMPP
  2. Проверено работоспособность всех 4 сайтов: site1.localhost, site2.localhost, site3.localhost и просто localhost (страница приветствия xampp)

Для диагностики проблем виртуального хоста

  1. Проверьте файл журнала apache
  2. Попробуйте проверить связь с сайтом и вернуть правильный IP-адрес. При сбое проверки связи обычно возникает проблема записи файла DNS/ хоста.
  3. Используйте что-то вроде http watch для проверки http-заголовка. Для сайта устанавливается узел xxxx.xxxx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .