2010-09-09 1 views
1

Я делаю перенаправление 301 на сайте A на сайт B - когда пользователь приходит на сайт B, ему нужно найти страницу, с которой пользователь пришел. Это, кажется, не работает, хотя:PHP 301 Redirect - собирать реферер

$_SERVER['HTTP_REFERER'] 

а если я делаю ссылку на страницу

<a href="http://site-b.com">go</a> 

я реферер через. Есть ли причина, по которой это не происходит после перенаправления? Если да, то кто-нибудь может предложить какие-либо советы о том, как это сделать. Я хочу, во что бы то ни стало, получить строку запроса для перенаправления.

Возможно, есть другой заголовок, который мне нужно отправить со страницы, которая перенаправляет?

Спасибо за любой совет!

ответ

3

Дело в том, что HTTP_REFERER является сайтом A. Именно так работает 301 человек.

Таким образом, простой способ сделать это - взять URL-адрес реферера на сайт A в конец URL-адреса сайта B в качестве переменной. Затем, на сайте B, в любое время, когда у вас есть реферал с сайта A, вы можете его получить.

<?php 
    header("Location: http://site-b.com/?ref=" 
      .urlencode($_SERVER['HTTP_REFERER']),TRUE,301); 
?> 

Тогда, конечно, на сайте B, доступ urldecode($_GET['ref']) для вашего реферера.

Однако ... если вы хотите избежать переменных _GET, у вас есть несколько вариантов.

A) Соберите _GET запрос, а затем повторно munge в URL - IE есть сайт B перенаправление на «чистую» версию самого себя.

B) Попросите страницу перенаправления сделать curl или stream_get_contents к странице «сбора» перед выдачей header(), где собирать и хранить информацию о любой сессии (например, в refererer) и он готов быть обрабатываются при перенаправлении.

0

Вы можете попробовать добавить строку CGI запроса в конце вашего URL при выполнении переадресации - например

http://www.site-b.com?redirectfrom=www.site-a.com 

site-b.com будет игнорировать параметр URL, но он будет записан в журналы и будут доступны из PHP.

+0

Оригинальный плакат говорит, что он хочет избежать строк запроса любой ценой, поэтому я не думаю, что это будет то, что они после –

+0

да, строка запроса на самом деле не вариант, спасибо за предложение. – kieran

-1

Вы можете сделать это с помощью javascript. Используйте следующий сценарий, но между < головы > и </голова >

<script type="text/javascript"> 
location.href='http://www.site-b.com'; 
</script> 

Это, конечно, не сделать правильный HTTP 301 REDIR, но я просто проверял, и он будет посылать реферер (в реферер являющийся сайтом-а).

 Смежные вопросы

  • Нет связанных вопросов^_^