2013-04-26 71 views
2

我試圖通過php文件將外部網站的網址設置爲變量來重定向所有外部鏈接。僅將外部網址重定向爲查詢字符串

例子。如果我的網站(mysite.com)有一個鏈接到google.com/results/1234我想自動重寫url的東西linke mysite.com/external.php?p=google.com/results/1234.

我想要一個htaccess的解決方案,因爲我無法更改與外部URL相關的文件沒有影響網站上的其他網站。

我不想用mysite.com重定向任何鏈接。

如果有人能指引我正確的方向,我會非常感激。

+2

一旦生成外出鏈接,您就無法控制它們。它們的來源,即在您的網站內部生成它們的代碼,可能會被修改,但在您的問題中缺少。 – 2013-04-26 02:56:28

+0

這真的很有意義。謝謝faa – 2013-04-26 05:22:19

回答

1

通過.htacess文件不可行。 .htaccess只能重寫帶有解析到您的Web服務器的域名的傳入URL。它無法控制外發URL,因爲這些請求會直接發送到外發Web服務器(在您的示例中,google.com)。

您可能需要的是一種腳本解決方案,通過掛接所有鏈接的onclick事件,根據需要重定向用戶。

編輯:這是使用jQuery的概念的快速證明。這應該讓你開始。

<html> 
<head> 
<title>jQuery global redirector</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
</head> 
<body> 
<a href="http://google.com/search?q=jquery">google url would redirect</a><br /> 
<a href="http://mysite.com/somepage.php">mysite.com url won't redirect</a> 
<script> 
<!-- 
    $("a").click(function(e) { 
     var url = e.target.href; 
     if(!(url.startsWith("http://mysite.com") || url.startsWith("mysite.com"))) { 
     window.location.href = "http://mysite.com/redirect.php?site=" + url; 
     e.preventDefault(); 
     } 
    }); 
//--> 
</script> 
</body> 
</html> 

你或許應該把腳本另一個文件中(說redirect.js),然後包括這個腳本(附近的< HTML>結束)選擇在頁面中需要這樣的重定向。別忘了導入jQuery!

+0

謝謝Ravi提供這個解決方案!我沒想過要用jQuery。你對這個技術如何影響SEO有什麼看法?我想知道當機器人訪問該網站時,是否仍有機會通過硬編碼鏈接發生泄漏。 – 2013-04-26 05:21:33

+0

這既不會推高或降低排名。從搜索引擎優化的角度來看,「」文本保持完全一樣 - 文章中的鏈接等保持不變。事實上,你的鏈接標籤甚至沒有被觸及(像添加一個onclick =「」處理程序給他們),這就是jQuery的美麗。 – 2013-04-26 05:36:05