2010-09-09 60 views
1

我做了301在現場重定向到站點B - 當用戶到達站點B,它需要找到用戶來自的頁面。這似乎並沒有被工作雖:PHP 301重定向 - 收集引用

$_SERVER['HTTP_REFERER'] 

,而如果我做一個鏈接頁面

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

我打通引薦。重定向之後沒有通過它的原因嗎?如果有的話,任何人都可以就如何做到這一點提供建議。我想不惜一切代價在重定向上有一個查詢字符串。

是否有可能另一頭我需要與重定向頁面,發送?

感謝您的任何建議!

回答

3

的事情是,在HTTP_REFERER是網站A.這只是一個如何作品301。

這就是說,最簡單的方式來做到這一點是採取引薦到網站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請求,然後重新獲取URL - IE將站點B重定向到其自身的「乾淨」版本。

B)讓你的重定向頁面發出header(),在那裏你收集做出curlstream_get_contents轉移到「收藏」頁之前和存儲任何會話信息(如refererer)並將其製備成當他們重定向時進行處理。

0

你可以嘗試做重定向時加入CGI查詢字符串到您的網址的結尾 - 例如

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

site-b.com會忽略網址參數,但它會被記錄在日誌,並可以從PHP訪問。

+0

樓主說,他希望避免查詢字符串不惜一切代價,所以我不認爲這將是他們在做什麼之後 – 2010-09-09 13:08:22

+0

是,查詢字符串是不是一個真正的選擇,感謝您的建議,但。 – kieran 2010-09-09 13:10:09

-1

你可以用javascript來做到這一點。使用下面的腳本,但和<

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

這當然不會讓一個適當的HTTP 301再導向,但我只是測試它,它會發送引薦(引薦作爲網站-a)。