Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Внутренний редирект с помощью PHP (https://javascript.ru/forum/server/16148-vnutrennijj-redirekt-s-pomoshhyu-php.html)

mister_maxim 28.03.2011 10:48

Внутренний редирект с помощью 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 был не прав. А так перенаправление происходит.

melky 28.03.2011 20:11

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]

mister_maxim 30.03.2011 18:10

Оказывается тот человек ошибся - 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, время: 20:36.