保留Google +1,Facebook赞和Twitter推文此按钮在URI更改后计算

时间:2011-11-18 06:35:54

标签: redirect facebook-like social-networking google-plus-one

我的问题非常简单:有没有办法(以编程方式,技术上或手动方式)制作Google +1,Facebook赞或Twitter推文这个按钮会在更改URI后保留其计数?

以编程方式:使用javascript进行操作,使其显示两个URI的组合计数,同时仅将新操作发布到后者。

技术上:他们是否检测并遵循原始资源的301重定向?我可以在HTTP标题中包含任何特殊文本,告诉他们应该将所有“点”从旧URI移动到新URI吗?

手动:我可以在网站的某个地方提交一些我可以提交的电子邮件或者可以将我们的积分复制到新URI的人吗?

(请注意,我故意在此问题中使用URI而非URL。规范资源链接从something.php?id=idnumber更改为/mycoolproduct/

修改

Bounty开始了,但不回答“它无法完成”

6 个答案:

答案 0 :(得分:8)

我相信只有一种解决方案能够满足您的要求。该解决方案将301 / 302旧URI添加到新URI,然后继续使用带有社交按钮的旧URI 。所有主要的社交按钮都允许您指定喜欢/ g + / tweet /等的URL。这将保留您现有的社交分享计数,并且所有共享帖子仍将指向同一页面。现在选择是301还是302重定向。 302可以帮助保留当前的搜索位置,并且如果它非常好则避免丢失您的排名。 301重定向(永久移动)将导致搜索引擎开始索引新URL并删除旧URL。此可能导致当前搜索排名的丢失。看来,就这篇文章而言,没有人会尊重任何形式的社交投票的重定向。

所以我认为最安全的路线是302重定向继续使用旧的URI进行社交投票。您将以这种方式保留您的资产,但必须维护您的重定向并在旧的URI模板中投入更多资金。你的重定向是如何实现的?的.htaccess?还是在页面?您需要权衡您的案例的成本效益。

否则你应该301并开始使用社交按钮的新URI。在这种情况下,你可能会失去你的社会公平,但可以自由地建立新的,而不用担心搞乱任何事情。 如果您要更换的社会公平可以在6个月或更短的时间内收回,我就不会理会并重新开始。

然而,这提出了一个有趣的观点。您提到以编程方式添加两个计数。是的,你可以把一些JavaScript放在一起添加几个计数,但我得问为什么?将它们添加到一起用于可视化显示目的实际上不会有助于增加引荐流量或搜索排名。所以它只是一个我认为不会帮助你的立面。如果你只是想让你的访问者认为你很受欢迎,为什么不生成一个不断增加数字的图像服务器端。 (糟糕的笑话,不要这样做!)底线你实际上无法重定向你的社会公平,你可能会假装移动它,但实际上你不能。

考虑到您的原始问题询问了几个社交按钮,重要的是要注意即使这些服务中的一个或两个在应用社交投票时开始尊重重定向,也不会减轻您做出上述决定的麻烦。您仍然需要重定向现有的反向链接,如果您支持页面上的多个社交按钮,则需要考虑所有社交按钮来选择重定向类型。

答案 1 :(得分:2)

我不能代表如何使用Twitter / G +,而是针对Facebook:

您不能“移动”网址之间的喜欢和评论,对于新内容,您一定要开始使用新网址,但对于您现有的网址,如果您符合以下条件,您仍然可以使用原始内容,例如计数/评论:< / p>

  • 继续将新网址上的赞按钮指向旧网址(即<fb:like url="http://oldurl"/>
  • 为您的重定向代码添加一个例外,以便当Facebook的抓取工具(facebookexternalhit/1.* - 当前为1.1)访问它时,会显示原始的开放图形元标记集(这将保留描述,标题,缩略图等,像以前一样工作)
  • 登陆“旧”网址的其他用户仍会被重定向到新位置的内容

答案 2 :(得分:2)

我对这个问题有一个真正的解决方案,它可能不是最传统的,但它确实可以100%工作。使用一个名为sharrre的简单jQuery插件。请记住,我不是最好的jQuery编码器(如果你看到改进,请告诉我!)但这无论如何都适用。

以下是我在网站上的说法:

使用sharrre插件,您可以将当前共享计数添加到页面上的任何元素。我只是获取了两个URL的数据,然后将它们一起添加并显示在类似,推文,共享等按钮上。

此示例适用于Twitter,但我正在使用Facebook,Google Plus,Pinterest和Linkedin。这是代码:

<li id="twitter" data-url="CURRENT-URL" class="twitter sharrre"></li>

<li id="twitter-old" data-url="OLD-URL" class="twitter sharrre" style="display: none;"></li>

然后我调用了sharrre的代码:

$(function(){ sharrreItUp(); }

这是我的函数在我的.js文件中的显示方式:

function sharrreItUp() {

    $('#twitter').sharrre({
        share: {
            twitter: true
        },
        enableHover: false,
        click: function(api, options){
            api.simulateClick();
            api.openPopup('twitter');
        }
    });

    $('#twitter-old').sharrre({
        share: {
            twitter: true
        }   
    });

    setTimeout(function(){ 

        var oldTwts = $('#twitter-old .box .count').html();
        var newTwts = $('#twitter .box .count').html();
        $('#twitter .box .count').html(parseInt(oldTwts) + parseInt(newTwts));

    }, 2000);

}

和BAM ......你的新网址已被清除,来自不同社交网络的旧网址被添加到其中。

答案 3 :(得分:1)

不幸的是,没有解决方案。我们尝试了所有可能的解决方案,如果您进行301重定向,您将失去社交资产。我们发现不值得尝试维持我们的投票计数的麻烦,而是在转移到新网址结构的过渡期间将我们的按钮指向主页。

答案 4 :(得分:0)

  

我不想说错了,但我认为您只需要在每个共享按钮中定义URI,因此无论投票来自哪个URL,定义的URL都将用作计数。


如果您已经拥有两个不同的来源并且想要加入它,那么您应该关注iframe src并从中获取计数;对于谷歌+1,包含计数的div ID为#aggregateCount,对于twitter为#count;一个例子可以如下:

<?php
$doc = new DOMDocument();
$doc->loadHTMLFile('iframe-url-goes-here');
$count = $doc->getElementById('aggregateCount');
echo $count->nodeValue;
?>

然后,在加载DOM并加载小部件后的页面上,您可以附加自己的值。

希望这个帮助,无论如何我更喜欢第一种方式。

答案 5 :(得分:0)

放入新页面的head

<meta property="og:url" content="old_url_here"/>

这种方式Facebook属性喜欢旧页面。唯一的缺点是,当人们分享您的链接时,会包含旧的丰富代码段。