Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Перезд новую CMS, редирект старых ссылок на новые страницы?
цитата
26/10/12 в 16:07
 Vyacheslav
Новая CMS имеет совершенно иную структуру. К примеру на старом сайте /join.html, а на новом это /signup.php. Куча внешних ссылок уже заточена под /join.html?param1=value1&param2=value2&paramN=valueN
Как аккуратно сохранив рефера средиректить /join.html на /signup.php с теми же параметрами?

Т.е.
/join.html?param1=value1&param2=value2&paramN=valueN
превратить в
/signup.php?param1=value1&param2=value2&paramN=valueN
сохранив рефера.
цитата
26/10/12 в 17:18
 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");
цитата
26/10/12 в 19:27
 Mad
А разве это нельзя сделать с помощью RewriteRule + R=301,QSA?
цитата
26/10/12 в 19:30
 Vyacheslav
Про то что 301 редирект сохраняет рефера - это я знаю. Вот как сохранить и передать http GET параметры к новому файлу?
цитата
26/10/12 в 19:34
 Vyacheslav
Maaad писал:
А разве это нельзя сделать с помощью RewriteRule + R=301,QSA?

Думаю так и надо. А можно пример?
цитата
26/10/12 в 19:51
 johndoe2
Vyacheslav писал:
Думаю так и надо. А можно пример?


Код:
rewriterule ^join.html$ signup.php [R=301,QSA]


QSA как раз подцепляет все параметры из входного url к выходному


Эта страница в полной версии