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

时间:2013-04-26 02:40:29

标签: .htaccess rewrite

我正在尝试通过外部网站的网址设置为变量的php文件重定向所有外部链接。

实施例。如果我的网站(mysite.com)有google.com/results/1234的链接,我想自动将网址重写为linke mysite.com/external.php?p=google.com/results/1234.

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

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

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

1 个答案:

答案 0 :(得分: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)中,然后在需要此类重定向的页面中有选择地包含此脚本(在&lt; html&gt;末尾附近)。并且不要忘记导入jQuery!