Внутренний редирект с помощью PHP
в одной директории находятся два скрипта, с первого на второй произвожу внутренний редирект:
from.php: <?PHP Header("Status: 200 OK"); $dir=dirname($_SERVER['SCRIPT_NAME']); Header("Location: $dir/to.php"); echo "Вы на from.php"; exit(); ?> и to.php: <?PHP echo "Вы на to.php"; ?> Делаю по учебнику DKLAB внутренний редирект, там сказано что адрес URI должен быть абсолютным, и он работает на CGI-версии php только. У меня денвер, сказали что там PHP установлен как CGI версия. Еще сказано в учебнике что после его запуска from.php в браузерной строке так и останется, но у меня он меняется на to.php. Почему он меняется? Может у меня PHP установлен как модуль апаче, а тот кто сказал что как CGI был не прав. А так перенаправление происходит. |
Header("Status: 200 OK"); Header("Location: $dir/to.php"); я не хороший знаток php, то у перенаправления должен быть статус 302 (или 301, или 300) меняется он потому,что перенаправляет тоже самое делает и тег <meta http-equiv="refresh" content="0; URL=/to.php"> или скрипт location.href = '/to.php' чтобы url оставался прежним, надо изучать apache ,а именно mod_rewrite вот пример для вашего .htaccess, если я не ошибся RewriteEngine On RewriteRule ^from.php$ /to.php [L] |
Оказывается тот человек ошибся - php установлен как модуль апатча у меня на денвере, это я копнул книгу в главе установки пхп как cgi и как модуль апачтча, и там была написана разница в установке:
в файле httpd.conf в /usr/local/apache/conf/ в случае модульной версии пхп есть незакомментированная строка начинающаяся на LoadModule php5_module "/usr/local/php5/php5apache2_2.dll" её я кстати в нём и увидел, а в случае версии cgi: Action application/x-httpd-php5 "/_php5/php-cgi.exe" её я и не увидел. инструкций же Include в httpd.conf я не увидел, значит другие файлы не подключаются, и если что-то есть или чего то нет видно лишь в httpd.conf. Отсюда вывод что у меня установлен пхп как модуль апача. |
Часовой пояс GMT +3, время: 05:41. |