2012-07-23 132 views
1

College B订阅了网站A,他们通过其内部代理访问网站,该网站通过其代理改变了所有网页的网址以适应重定向。Google自定义搜索结果通过代理显示错误

例如,在网站上的公司简介页面通常是这样的:

website-a.com/about/us 

如果您查看了学院B的代理连接的页面,该链接将是:

website-a.proxy-b.com/about/us 

的重写是在代理上完成的,网站A无法控制它。

这是不是在所有少见,所以我希望我在看这个问题是一个简单的办法:

网站上使用谷歌的自定义搜索引擎......这一搜索代理后运行已完成其URL重写,动态搜索结果将返回UNLTERED URL ......因此,如果代理用户遵循一个URL,它们将直接返回到我们的网站,并失去它们在代理下的任何访问权限。

(为简单起见,假设我正在寻找由网站A实施的解决方案,并且该代理服务器B不受任何可以改变任何事情的人管理,以使该查找在学院一侧发生)

我正在寻找结果从谷歌使用JavaScript返回后重写URLS ......但看着代码,我预见了一些严重的问题。

有没有人设法解决这个问题,还是有一个简单的CSE技巧来即时重写目标URL?

回答

1

找到了解决办法:

function fixProxyLinks(){ 
     proxy_rex = new RegExp(document.location.host, "gi"); 
     orig_rex = new RegExp("/www.mysite.com/", "gi"); 

     //Check if current server is DIFFERENT from bg.com 
     if(document.location.host.search(orig_rex) == -1){ 
      $('.gsc-results a').each(function(){ 
       // Find all the fresh new search results and correct them for the sake of the Proxy 

       if(this.href.search(proxy_rex) == -1 && this.href.search(bg_rex) >= 0){ 
        this.href = this.href.replace(orig_rex, '/'+document.location.host+'/'); 
        $(this).attr("data-cturl", this.href); 
        $(this).attr("data-ctorig", this.href); 

       } 
      }); 
     } 
    } 

然后你坚持这个在您建立您的CSE对象: customSearchControl.setSearchCompleteCallback(this, fixProxyLinks);

注:关于数据CTURLdata-ctorig属性:
部分CSE功能是REWRITE该网址重定向通过谷歌进行跟踪,data-cturl是它将重写href点击的URL。不幸的是,您必须完全替换google重定向,并且只需将重定向目标指定为相同的代理网址,否则Google会发现并提示您正在重定向。 一旦用户点击了,CSE就会将href写回data-ctorig中设置的值,所以您显然也希望拥有该匹配。