2012-03-06 170 views
0

一個網站使用了「301永久重定向」到我的網站有沒有一種方法可以設置代碼檢測到這一點,並顯示一個頁面,當我的網站通過這個訪問?301永久重定向

有沒有人有這方面的想法?

+1

什麼是您的服務器端語言? – ManseUK 2012-03-06 16:07:09

+1

不可以。您的網站只會看到來自客戶端瀏覽器的'GET'請求。 301重定向直接在其他站點和客戶端瀏覽器之間完成,並且不會出現在您自己的站點上。 – 2012-03-06 16:07:53

+0

如果您想要顯示301重定向的特定頁面,爲什麼不直接將301重定向指向該頁面呢? – JaredPar 2012-03-06 16:08:23

回答

1

你只能得到一個引用者。我想你無法獲得客戶端在上次請求期間獲取的服務器上的http狀態碼。

所以我的答案是NO,你不能在你的服務器上獲得301狀態碼。

但是你可以用引用變量做一些必要的魔法。

例如在PHP中,你可以閱讀:

$_SERVER['HTTP_REFERER']; 
+0

301重定向Referer未通過 – 2012-03-06 16:20:25

+0

我知道使用301到我的網站,如果有幫助的網站的網址? – Ma9ic 2012-03-06 16:21:20

+0

不要使用'$ _SERVER ['HTTP_REFERER'];'。即使PHP的文檔說它不能系統地信任。 – hohner 2012-03-06 16:22:04

0

你可以做的不多。如果你正在做301,你可以設置引用到查詢字符串。但既然你沒有,你只能抓住請求給你的東西。

0

您可以嘗試使用PHP的$_SERVER['HTTP_REFERER']來跟蹤訪問者來源的源URL。我認爲它有點狡猾,並且可能不會在所有瀏覽器中產生相同的結果。即使PHP's documentation說'它不能真正被信任'。

爲什麼你必須使用.htaccess重定向?你可以做這樣的事情:

站點A的index.php文件:

header("Location: http://siteb.com/?ref=".urlencode('http://sitea.com'); 

站點B的index.php文件:

if(isset($_GET['ref'])) 
{ 
    if($_GET['ref']=='http://sitea.com') 
    { 
     // Do something 
    } 
} 

編輯:

如果你不能編輯網站A的代碼或服務器設置,請嘗試使用:

if($_SERVER['HTTP_REFERER']=='http://sitea.com') 
{ 
    // Do something 
} 
+0

我還沒有設置301重定向其他人必須指向我的網站,所以我想基本上告訴他們,他們輸入的網址不是「官方的」可以這麼說 – Ma9ic 2012-03-06 16:23:04

+0

我編輯了問題 – hohner 2012-03-06 16:25:38

+0

我試圖\t Ma9ic 2012-03-06 16:33:58