Wamp vhost docroot всегда отображается как c:\wamp\www, а не как vhost docroot

Я перепробовал десятки руководств и прочитал массу информации, но до сих пор не могу найти решение своей проблемы. Я удалил, переустановил и проверил и перепроверил все возможные проблемы.

Проблема остается. Независимо от того, какие изменения я делаю, корень документа ВСЕГДА отображается как c:\wamp\www.

Даже если я изменю httpd.conf DocumentRoot на другой путь, он все равно будет отображаться как c:\wamp\www

Что странно, если vhost был настроен неправильно, мой index.php не должен отображаться. Но на самом деле это так. И у меня есть строка кода для отображения $_SERVER['DOCUMENT_ROOT'], и она ВСЕГДА отображается как c:\wamp\www, а не для ЛЮБОГО из корней документа vhosts, которые я назначил.

Так что страницы грузятся, естественно с ошибками. ВСЕ мои страницы ссылаются на $_SERVER['DOCUMENT_ROOT'] и ВСЕ отлично работают на моих живых сайтах.

Итак, суть в том, что я проверил свои конфигурации вдоль и поперек. / vs. \, файл hosts правильный, корневые пути документов правильные и указывают на фактические папки, содержащие правильные файлы. Я играл со всеми «стандартными» и нестандартными возможностями конфига.

Должен быть какой-то другой элемент, который мешает этому работать. Пожалуйста, помоги, если можешь.

Пожалуйста, не предлагайте мне попробовать другую конфигурацию. Я пробовал их все.

Скажите, пожалуйста, вы знаете, почему это происходит и как это исправить. У меня есть сценарий, который почти добился цели, но мне кажется, что его не хватает. Я оставил сообщение для плаката и не получил от него ответа.

Я надеюсь, что у кого-то здесь есть исправление, а не предложение попробовать еще одну конфигурацию. Если вы не ЗНАЕТЕ о проблеме и не имеете решения, пожалуйста, не отвечайте. Это может показаться грубым, но я видел и пробовал все конфиги.

NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
   DocumentRoot C:\wamp\www\itsaboutwirelessnetworks
   ServerName itsaboutwirelessnetworks.localhost
   ServerAlias itsaboutwirelessnetworks
</VirtualHost>

<VirtualHost 127.0.0.1:80>
   DocumentRoot C:\wamp\www\computerstore
   ServerName computerstore.localhost
   ServerAlias computerstore
</VirtualHost>

<VirtualHost 127.0.0.1:80>
  DocumentRoot C:\wamp\www
  ServerName localhost
   ServerAlias localhost
</VirtualHost>

Является ли конфиг. Почему я не могу редактировать с возвратом каретки в комментариях?


person ScottyG    schedule 05.04.2011    source источник
comment
Не могли бы вы показать нам соответствующую конфигурацию виртуального хоста? Кажется странным.   -  person Wrikken    schedule 06.04.2011
comment
Арх. Вы знаете, что можете редактировать свой вопрос? Там гораздо более читаемая разметка :) Но вроде все в порядке, я понятия не имею, где искать. Что-нибудь еще интересное в массиве $_SERVER?   -  person Wrikken    schedule 06.04.2011
comment
Где находится массив $_SERVER?   -  person ScottyG    schedule 06.04.2011


Ответы (2)


в C:\Windows\System32\drivers\etc\hosts добавьте эту строку:

127.0.0.1 computerstore.local

в httpd.conf убедитесь, что эта строка раскомментирована:

Include "conf/extra/httpd-vhosts.conf"

(это должно указывать на то, где находится ваш файл vhosts)

ваш файл httpd-vhosts.conf должен содержать следующее:

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot              C:\wamp\www
    ServerName                127.0.0.1
    ServerAlias               localhost
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN localhost
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot              C:\wamp\www\conputerstore
    ServerName                computerstore.local
    ServerAlias               computerstore.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN computerstore.local
</VirtualHost>

Если WAMP отказывается загружать файл vhosts, вместо этого переместите конфигурацию vhosts в конец httpd.conf.

Это должно включить конфигурацию на основе имени, а не на основе IP. Если вы не настроите его таким образом, Apache будет разрешать пути ваших сайтов по IP, а поскольку вы укажете один IP, идентичный всем виртуальным хостам, последний будет иметь приоритет над предыдущими. docroot вашего последнего виртуального хоста - C:\wamp\www, что делает поведение, которое вы описываете, абсолютно нормальным.

ОБНОВЛЕНИЕ:

Поскольку корень документа C:\wamp\www\computerstore указан для доменного имени computerstore.local, не забудьте также перейти на http://computerstore.local в браузере. Если вы попробуете http://localhost/computerstore, имя домена будет разрешено как localhost, а в первом виртуальном хосте его корень документа будет равен C:\wamp\www. computerstore будет рассматриваться как подкаталог; в этом случае docroot не будет изменен.

person mingos    schedule 05.04.2011
comment
Внесены изменения, как вы написали. Никаких изменений в поведении. Но вы сказали мне, что последний виртуальный хост становится по умолчанию, так что эта часть информации является новой. Что если я удалю виртуальный хост, который ссылается на локальный хост? - person ScottyG; 06.04.2011
comment
Для отладки у меня есть '‹?php var_dump($_SERVER['DOCUMENT_ROOT']); ?›», и он показывает строку «C:/wamp/www» (длина = 11), поэтому изменение не изменило корень документа. - person ScottyG; 06.04.2011
comment
Итак, еще одна конфигурация, которая не меняет корень документа! У кого-нибудь есть FIX для этого? - person ScottyG; 06.04.2011
comment
@mingos, опубликованное вами изменение не сработало. Любые другие идеи? - person ScottyG; 06.04.2011
comment
Я удалил записи на локальном хосте, и в результате страница вообще не загружалась! В начало! @mingos, можешь предложить какие-нибудь другие идеи? - person ScottyG; 06.04.2011
comment
Извините, подтверждено, что эта конфигурация работает на нескольких компьютерах. Не могли бы вы загрузить файлы hosts, httpd.conf и httpd-vhosts.conf на какой-нибудь файлообменник, чтобы я мог посмотреть? - person mingos; 06.04.2011
comment
@mingos Вы можете взять их здесь! itsaboutniches.com/wampconfig.rar Дайте мне знать, если я ошибаюсь, но пока они не работай на меня. - person ScottyG; 07.04.2011
comment
Помимо необходимости очистки (повторные настройки), кажется, все в порядке. Кстати, вы посмотрели свой файл hosts? Есть более 14000 записей с комментариями, вставленными Spybot. Вы можете подумать об использовании хорошего антивируса ;). В любом случае, единственная возможность, которая приходит мне на ум, - это правило перезаписи в ваших .htaccess файлах - есть ли оно? - person mingos; 07.04.2011
comment
О, подождите, после второго взгляда я думаю, что нашел его. У вас установлен DocumentRoot в C:\wamp\www в httpd.conf. Закомментируйте эту строку и перезапустите сервер, я думаю, это должно помочь. - person mingos; 07.04.2011
comment
Чувак, я думал, что это сработает. Но это не так. Это было отличное предложение. После этого у меня был момент Ах-Ха, и я переделал оператор ‹Directory в http.conf, думая, что он может конфликтовать с конфигурацией vhost, но туда тоже не лезть. Кажется, я стреляю холостыми при каждой попытке. Есть еще какие-нибудь хитрости в рукаве? - person ScottyG; 07.04.2011
comment
140000 записей добавлены SB, потому что существует 14000 известных сайтов, которые удалены. вредоносное ПО и т. д. Список постоянно пополняется. И я использую Symantec Corporate Ed. для АВ. - person ScottyG; 07.04.2011
comment
Я также пробовал средство проверки портов, включенное в xampp, и когда apache не работает, порт 80 не используется, а когда он работает, он используется apache. Так что я знаю, что у меня нет странной проблемы с портом. - person ScottyG; 07.04.2011
comment
А так как это на Висте, UAC выключен, запускаю от Администратора, имею полные права на wamp и все файлы под ним. - person ScottyG; 07.04.2011
comment
Тогда без понятия. При виртуальном хостинге на основе имени ввод http://computerstore.localhost в адресной строке должен привести вас к C:\wamp\www\computerstore, если ваша конфигурация содержит ошибку, Apache не сможет правильно разрешить имя и, следовательно, не загрузит ваш файл index.php. Боюсь, у меня закончились идеи. - person mingos; 07.04.2011
comment
Хм, еще одно: вы печатаете http://computerstore.local, а не http://localhost/computerstore, верно? Потому что в последнем случае $_SERVER['DOCUMENT_ROOT'] является C:\wamp\www. - person mingos; 07.04.2011
comment
@мингос ! Ты человек! Я не пытался использовать домен, НЕ используя localhost в качестве префикса домена. Я предположил, и это было плохим предположением, что для использования и vhost мне нужно использовать префикс localhost. На самом деле, простое использование локального доменного хранилища компьютеров или его беспроводных сетей действительно работает. Это должно быть в любом FAQ по использованию vhost на wamp. И я не могу понять, почему никто не заметил и не задал вопрос. - person ScottyG; 08.04.2011
comment
LOL, я предположил, что, поскольку вы определили доменное имя, вы также намеревались его использовать: D. Я обновлю ответ, чтобы включить решение. - person mingos; 09.04.2011
comment
@Scotty G: если этот ответ решает вашу проблему, нажмите зеленую стрелку, чтобы принять ответ :) - person Kyle; 11.04.2011

Вы пытались поместить C:\wamp\www\conputerstore в кавычки?

В качестве примера вот моя конфигурация vhost:

<VirtualHost *:8082>  
  DocumentRoot "c:/wamp/www/test"  
  DirectoryIndex index.php  
  <Directory "c:/wamp/www/test">  
    AllowOverride All  
    Allow from All  
  </Directory>  
</VirtualHost>
person Robert van der Linde    schedule 07.04.2011
comment
Да, я пробовал кавычки и без кавычек, меняя / на \ и каждую комбинацию / \, с объявлением «Directory c:/wamp/www/» и без него, а также с кавычками или без него. Все еще не идет. Но из того, что я прочитал, кавычки предназначены для каталогов, в которых есть такие пробелы, как C:\wamp dir\www folder\, где c:\wamp\www не требует использования кавычек. Любые другие идеи? - person ScottyG; 07.04.2011