11

我的问题很简单:有没有办法(以编程方式、技术方式或手动方式)使 Google +1、Facebook Like 或 Twitter Tweet 这个按钮在 URI 更改后保留其计数?

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

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

手动:我可以在他们网站上的某个地方提交一些表单,或者我可以通过电子邮件发送的某个人能够将我们的积分复制到新的 URI?

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

编辑

赏金开始了,但不要回答“无法完成”

4

6 回答 6

8

我相信只有一种解决方案可以普遍满足您的上述要求。该解决方案是将 301/ 302 旧 URI 转换为新 URI,然后继续将旧 URI 与您的社交按钮一起使用。所有主要的社交按钮都允许您指定喜欢/g+/tweet/etc 的 URL。这将保留您现有的社交共享计数,并且所有共享帖子仍将指向同一页面。现在的选择变成是 301 还是 302 重定向。302 可能有助于保留当前的搜索位置并避免失去您的排名(如果它非常好)。301 重定向(永久移动)将导致搜索引擎开始索引您的新 URL 并删除旧 URL。这可能导致当前搜索排名下降。似乎在这篇文章中,没有人尊重任何形式的社会投票的重定向。

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

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

然而,这带来了一个有趣的观点。您提到以编程方式添加两个计数。好吧,是的,你可以把一些 JavaScript 放在一起来添加几个计数,但我得问为什么?将它们加在一起用于视觉显示实际上不会有助于增加推荐流量或搜索排名。所以它只是一个我认为对你没有帮助的门面。如果您只是想欺骗访问者认为您很受欢迎,为什么不直接生成一个不断增加的图像服务器端。(坏笑话,不要这样做!)底线你不能真正改变你的社会公平,你可以假装已经移动它,但实际上你不能。

考虑到您最初的问题询问了几个社交按钮,重要的是要注意,即使其中一两个服务在应用社交投票时开始尊重重定向,它也不会让您免于做出上述决定。您仍然需要现有反向链接的重定向,如果您在页面上支持多个社交按钮,则需要在考虑所有社交按钮的情况下选择重定向类型。

于 2011-11-24T07:07:27.103 回答
2

我不能说如何使用 Twitter/G+ 来做到这一点,但对于 Facebook:

您不能在 URL 之间“移动”点赞和评论,对于新内容,您绝对应该开始使用新的 URL,但是对于现有的 URL,如果您满足以下条件,您仍然可以使用原始的点赞计数/评论:

  • 继续将新 URL 上的 Like 按钮指向旧 URL(即<fb:like url="http://oldurl"/>
  • 为您的重定向代码添加一个例外,以便当 Facebook 的爬虫(facebookexternalhit/1.*目前为 1.1)访问它时,显示原始的开放图元标记集(这将保持描述、标题、缩略图等,像以前一样工作)
  • 登陆“旧”网址的其他用户仍将被重定向到其新位置的内容
于 2011-11-24T20:31:56.360 回答
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 ......你有你的新 URL 被共享,来自不同社交网络的旧共享被添加到它们中。

于 2013-03-19T02:01:29.710 回答
1

不幸的是,没有解决方案。我们已经尝试了所有可能的解决方案,如果您进行 301 重定向,您将失去社会公平。我们发现尝试维护我们的投票计数不值得麻烦,而是在移动到新的 url 结构的过程中将我们的按钮指向主页。

于 2012-03-26T23:05:33.887 回答
0

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


如果你已经有两个不同的来源并且你想加入它,你应该遵循 iframe src 并从中刮取计数;对于 google +1,包含计数的 div id 是#aggregateCounttwitter #count;一个例子可能如下:

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

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

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

于 2011-11-30T21:12:38.743 回答
0

放入head新页面的

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

这样,Facebook 就会为旧页面添加点赞。唯一的缺点是,当人们分享您的链接时,旧的丰富网页摘要将被包含在内。

于 2015-06-22T04:49:18.193 回答