.htaccess 仅将外部url重定向为查询字符串

.htaccess 仅将外部url重定向为查询字符串,.htaccess,rewrite,.htaccess,Rewrite,我试图通过一个php文件重定向所有外部链接,并将外部站点的url设置为一个变量 例如。如果我的网站(mysite.com)有一个指向google.com/results/1234的链接,我想自动将url重写为某个链接mysite.com/external.php?p=google.com/results/1234。 我想要一个htaccess解决方案,因为我无法更改与外部URL关联的文件,而不会影响站点上的其他URL 我不想重定向任何与mysite.com的链接 如果有人能给我指出正确的方向,我

我试图通过一个php文件重定向所有外部链接,并将外部站点的url设置为一个变量

例如。如果我的网站(mysite.com)有一个指向
google.com/results/1234
的链接,我想自动将url重写为某个链接
mysite.com/external.php?p=google.com/results/1234。

我想要一个htaccess解决方案,因为我无法更改与外部URL关联的文件,而不会影响站点上的其他URL

我不想重定向任何与mysite.com的链接


如果有人能给我指出正确的方向,我将非常感激。

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

jQuery全局重定向器


您可能应该将脚本放在另一个文件(比如redirect.js)中,然后在需要重定向的页面中有选择地包含该脚本(接近末尾)。而且别忘了导入jQuery

一旦生成传出的外部链接,您就无法控制它们。它们的来源,在你的站点中生成它们的代码,可能会被修改,但是你的问题中缺少了它。这真的很有意义。感谢faaThank you Ravi提供此解决方案!我没有想到要使用jquery。你对这种技术将如何影响搜索引擎优化有什么看法?我想知道当机器人访问该网站时,我是否还有机会通过硬编码链接泄露信息。这既不会提升排名,也不会降低排名。从SEO的角度来看,它是中性的,因为
文本保持完全相同-文章等中的链接保持不变。事实上,您的链接标记甚至没有被触动(比如向它们添加一个onclick=”“处理程序),这就是jQuery的美妙之处。