仅将外部网址重定向为查询字符串

问题描述:

我试图通过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

通过.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