Мое приложение PHP не работает из-за $ _SERVER ['REQUEST_URI'] возвращает полный URL-адрес скрипту вместо относительного пути.
My environment:
Windows 7 64 bit.
XAMPP Version 1.8.2
PHP Version 5.4.16
Apache версии Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.16
Мой виртуальный хост Conf:
<VirtualHost *:80>
DocumentRoot "D:/HTDOCS/ivankristianto"
ServerName www.ivankristianto.local
UseCanonicalName Off
<Directory "D:/HTDOCS/ivankristianto">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
Я создал базовый сценарий для тестирования содержимого $ _SERVER:
echo '$_SERVER[\'HTTP_HOST\'] : ' . $_SERVER['HTTP_HOST'];
echo '<br/>' . '$_SERVER[\'PHP_SELF\'] : ' . $_SERVER['PHP_SELF'];
echo '<br/>' . '$_SERVER[\'REQUEST_URI\'] : ' . $_SERVER['REQUEST_URI'];
И вот результат:
// URL: http://localhost/ivankristianto/request.php
$_SERVER['HTTP_HOST'] : localhost
$_SERVER['PHP_SELF'] : /ivankristianto/request.php
$_SERVER['REQUEST_URI'] : /ivankristianto/request.php //This is correct
И
// URL: http://www.ivankristianto.local/request.php
$_SERVER['HTTP_HOST'] : www.ivankristianto.local
$_SERVER['PHP_SELF'] : /request.php
$_SERVER['REQUEST_URI'] : http://www.ivankristianto.local/request.php //This is wrong
Я не использовал прокси-сервер, все, что я сделал это просто установить его в моих/и т.д./хостов.
Я потратил часы, чтобы узнать, почему это происходит, и были поиски через Google и этот сайт, но не могут найти подсказки.
Не могли бы вы указать, что случилось?
Спасибо.
Иван
Спасибо JohnnyFaldo за ваш ответ. Но REQUEST_URI не должен возвращать полный URL-адрес, он должен вернуться к чему-то вроде этого: '/request.php'. На основе PHP Doc: http://php.net/manual/en/reserved.variables.server.php – Ivan
Это то, что он делает. Это моя точка зрения - вы смущены синтаксисом «URL» вашего виртуального хоста - если вы изменили его в файлах хоста только на «ivankristianto» без www. &. local - тогда это будет казаться менее странным. Это просто имя, которое ссылается на фактическую часть URI, которую он представляет, заданный в файле hosts – JohnnyFaldo
@ Ивана вы пытались избавиться от строки UseCanonicalName в файле hosts – JohnnyFaldo