Vyacheslav
Новая CMS имеет совершенно иную структуру. К примеру на старом сайте /join.html, а на новом это /signup.php. Куча внешних ссылок уже заточена под /join.html?param1=value1¶m2=value2¶mN=valueN
Как аккуратно сохранив рефера средиректить /join.html на /signup.php с теми же параметрами?
Т.е.
/join.html?param1=value1¶m2=value2¶mN=valueN
превратить в
/signup.php?param1=value1¶m2=value2¶mN=valueN
сохранив рефера.
johndoe2
Никогда не задавался таким вопросом. А сейчас оказалось, что поведение в этом случае не описывается в стандарте.
Сделал пример на проверить, и оказалось, что при редиректе (и 301, и 302) в опере/хроме/фоксе реферер сохраняется. Т.е. если на странице X нажать ссылку Y, которая редиректит браурез на Z, то на Z реферер=X
Вот сам убедись
src.php
Код:
<?
header('Location: dest.php');
dest.php
Код:
<?
echo '<b>referer</b> = '.(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '*not set*');
dummy.html
Код:
<a href="src.php">pass dummy.html as referer to src.php which redirects to dest.php</a>
сохрани в один каталог под веб-сервером, открой dummy.html и нажми ссылку
------
Анекдот в тему:
[user1] I read some on Google that you can use:
header("referer:page1.php")
to pass the referrer, but it isn't working for me. Any ideas?
[user2] try with an uppercase 'r' and a space between the ':' and the uri:
header("Referer: page1.php");
Vyacheslav
Maaad писал:
А разве это нельзя сделать с помощью RewriteRule + R=301,QSA?
Думаю так и надо. А можно пример?
johndoe2
Vyacheslav писал:
Думаю так и надо. А можно пример?
Код:
rewriterule ^join.html$ signup.php [R=301,QSA]
QSA как раз подцепляет все параметры из входного url к выходному