URL-адреса моих проектов в WAMP не разрешаются, как я ожидал. Например, я ожидаю, что проект в папке c: \ wamp \ www \ project1 получит URL http: // project1 / , но на самом деле имеет URL http: // localhost / project1 / .
Это может вызвать проблемы при доступе к переменным сервера. Как это исправить?
Фактически это изменение было задумано разработчиками WAMPServer и по уважительной причине.
Существует проблема с использованием URL-адреса localhost/project1
и WAMPServer DocumentRoot по умолчанию, поскольку он создает проблемы для некоторых фреймворков и сред типа WordPress, а также для вашего собственного кода, если вы используете код, который зависит от знания чего-либо о серверной среде.
Правильное решение – создать виртуальные хосты для всех ваших проектов, даже те, которые вы храните в папках стилей \wamp\www\project1
.
При этом DocumentRoot является \wamp\www
и это вызывает эти проблемы.
Эти инструменты ожидают, что DocumentRoot станет корнем сайта, т. \wamp\www\project1
чтобы при использовании переменных PHP, таких как
$_SERVER['HTTP_HOST'] $_SERVER['SERVER_NAME'] $_SERVER['DOCUMENT_ROOT']
они получают правильный ответ, т. е. ответ, который они получат на реальном реальном сервере, размещающем только этот сайт.
Поэтому использование localhost\project1
будет означать, что эти переменные вернутся
$_SERVER['HTTP_HOST'] = localhost $_SERVER['SERVER_NAME'] = localhost $_SERVER['DOCUMENT_ROOT'] = C:/wamp/www
Когда они вернутся
$_SERVER['HTTP_HOST'] = project1 $_SERVER['SERVER_NAME'] = project1 $_SERVER['DOCUMENT_ROOT'] = C:/wamp/www/project1
Итак, что вы должны сделать, чтобы меню My Projects
работало и уменьшало вашу боль при копировании сайтов на живые серверы:
Создайте запись в файле HOSTS для каждого такого проекта и не забудьте создать его для доступа через IPV4 (127.0.0.1) и один для доступа через IPV6 (:: 1): –
127.0.0.1 localhost 127.0.0.1 project1 ::1 localhost ::1 project1
Не забудьте обновить кеш-память Windows после любых изменений в этом файле:
Запустите командное окно с помощью « Run as Administrator
и выполните: –
net stop Dnscache net start Dnscache
Теперь вы должны создать определение виртуального хоста, поэтому отредактируйте \wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf
(версии Apache могут отличаться)
Сначала удалите материал по умолчанию, когда вы это сделаете. А затем создайте определения виртуального хоста следующим образом:
# # Use name-based virtual hosting. # This next line is not required if you are using Apache 2.4.x and should be deleted NameVirtualHost *:80 ## should be first so the wamp menu page loads and is the default site ## should also never be changed from only allowing access from the local machine ## for a bit of extra security from casual ip address probing <VirtualHost *:80> DocumentRoot "C:/wamp/www" ServerName localhost ServerAlias localhost <Directory "C:/wamp/www"> AllowOverride All <IfDefine APACHE24> Require local </IfDefine> <IfDefine !APACHE24> Order Deny,Allow Deny from all Allow from 127.0.0.1 localhost ::1 </IfDefine> </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/wamp/www/project1" ServerName project1 ServerAlias project1 <Directory "C:/wamp/www/project1"> AllowOverride All <IfDefine APACHE24> Require local </IfDefine> <IfDefine !APACHE24> Order Deny,Allow Deny from all Allow from 127.0.0.1 localhost ::1 </IfDefine> </Directory> </VirtualHost>
Теперь вам нужно еще одно изменение, вы должны раскомментировать строку в httpd.conf
которая включает в себя вышеупомянутый файл, который мы только что изменили. Поэтому отредактируйте файл httpd.conf
, используйте меню wampmanager, чтобы это сделать, поскольку оно позволяет вам редактировать правильный файл.
Найдите эту строку #Include conf/extra/httpd-vhosts.conf
и удалите символ комментария #
с начала строки следующим образом:
Include conf/extra/httpd-vhosts.conf
Теперь, конечно, вам нужно будет перезапустить Apache, чтобы он обновлял ваши настройки.
Если Apache не перезагружается, вы, вероятно, допустили ошибку в конфиге, чтобы выяснить, что не так.
Откройте командное окно и CD
в папке \wamp\bin\apache\apache2.4.9\bin
.
Затем запустите:
httpd -t
Если ошибка находится в httpd-vhost.conf
httpd.conf
или httpd-vhost.conf
она сообщит вам об ошибке, а также предоставит номер строки, чтобы облегчить поиск ошибки.
в вашей папке www откройте index.php в строке 30 change: $ suppress_localhost будет false
это должно выглядеть:
$ suppress_localhost = false ;
В вашей папке www
откройте index.php
в строке 30. Здесь измените $suppress_localhost
на false
. Итак, это должно выглядеть так:
$suppress_localhost = false;
Это было самым быстрым и легким решением для меня. Я использую 64-битный Wamp.
Кажется, что ваш шаблон настроен на запуск веб-сайта на обычно несуществующем домене helloworld.
Добавить:
127.0.0.1 helloworld
внутри этого файла: c:\windows\system32\drivers\etc\hosts
Убедитесь, что вы запускаете текстовый редактор с правами администратора, чтобы иметь возможность редактировать этот файл.
Это скажет вашему компьютеру, что иначе не существующий домен helloworld
должен быть разрешен на ваш обратный адрес цикла.
Ладно, у меня была эта проблема. Итак, я устранил проблему и проследил ее до фактического решения, а не A HACK.
РЕШЕНИЕ :
WAMP Settings
, Add localhost in URL
Совершено . Остальное – FYI о том, как и почему.
Примечание : localhost / myproject.php или myproject.php. Хотя решение уже было принято, я видел несколько сообщений, которые меня смутили. Принятое решение основано на одном проекте по отношению к различным серверным приложениям, основанным на конкретном вопросе OP и влиянии на этот единственный проект. Но все остальные решения – это хаки и на самом деле не отвечают на решение вопроса OP, но приносят хороший момент в отношении URL-адреса. Итак, согласно другим «решениям», вот как переключить ссылку localhost в URL. Следовательно, мое дополнительное решение добавлено в смесь.
Это тумблер.
Процесс устранения неполадок (без взлома):
Давайте заглянем в index.php
Давайте посмотрим на файл конфигурации. Обратите внимание на переменные и массив?
Вот массив. Переменная, используемая ранее. Давайте посмотрим … О, это говорит нам, где и что делать.
Как отмечено в РЕШЕНИИ :
Для меня был самый простой способ перейти на http: // localhost, а на домашней странице wampserver – Add a Virtual Host
(раздел «Инструменты»). Существует хорошая и простая форма для создания псевдонима без каких-либо проблем (вместо этого консоль при использовании значка в трее для создания псевдонима). Нет редактирования исходного кода, просто используя то, что предлагает вамп. Не забудьте обновить DNS после создания псевдонима. Протестировано на Win10, WampServer 3.0.6 64bit.
Создайте виртуальный хост, как сказал RiggsFolly.
И попытайтесь раскомментировать LoadModule rewrite_module modules/mod_rewrite.so
в httpd.conf
Если ваша папка «Ваши проекты» существует в «wamp / www /», и если вы можете увидеть домашнюю страницу локального хоста после правильной работы с вами, и вы все равно не можете получить доступ к своим проектам, просто перейдите в папку www, откройте index.php и найдите $ suppress_localhost и установите для него значение false . Перезапустите wampserver, перейдите на localhost и попробуйте получить доступ к вашему проекту.
HostnameLookups ON не выключен в httpd.conf с DocumentRoot изменен или нет. проверен в браузере для $ _SERVER ['HTTP_HOST'] $ _SERVER ['SERVER_NAME'] $ _SERVER ['DOCUMENT_ROOT']
C:\wamp\www In index.php line 338 ($suppress_localhost ? 'http://' : '') change http:// to http://localhost/
Для этого вы можете создать виртуальный хост с помощью Add a virtual Host
утилиту в меню « Сервис» на домашней странице localhost.
Дополнительные сведения о том, как создать виртуальный хост: Пошаговые инструкции
Откройте index.php в папке www и установите
$ suppress_localhost = True; ===> $ suppress_localhost = false;
это работа.
Вы можете обновить переменную «urlAddLocalhost» в файле «wamp64 / wampmanager.conf» для включения / выключения. По умолчанию он отключен.
Моей версией версии 3.0.0.
urlAddLocalhost = "off"
Я также столкнулся с такой же проблемой после установки новой настройки Wamp в окне 7, 64 бит. просто измените строку нет. 30 $ suppress_localhost = false; Его работа для меня.