我的问题非常简单:有没有办法(以编程方式,技术上或手动方式)制作Google +1,Facebook赞或Twitter推文这个按钮在更改URI后保留其计数?
以编程方式:使用javascript做一些事情,使其显示两个URI的组合计数,同时仅将新操作发布到后者。
从技术上讲:他们是否检测并遵循原始资源的301重定向?我可以在HTTP标头中包含任何特殊文本,告诉他们应该将所有“点”从旧URI移动到新URI吗?
手动:有些形式可以在我们网站的某个地方提交,或者我可以通过电子邮件发送给我们能够将我们的点数复制到新的URI?
(请注意,我故意在此问题中使用URI而不是URL。规范资源链接正在改变 something.php?id=idnumber
至 /mycoolproduct/
)
编辑
赏金开始了,但不回答“它无法完成”
不幸的是,没有解决方案。我们尝试了所有可能的解决方案,如果您进行301重定向,您将失去社交资产。我们发现不值得尝试维持我们的投票计数的麻烦,而是在转移到新网址结构的过渡期间将我们的按钮指向主页。
不幸的是,没有解决方案。我们尝试了所有可能的解决方案,如果您进行301重定向,您将失去社交资产。我们发现不值得尝试维持我们的投票计数的麻烦,而是在转移到新网址结构的过渡期间将我们的按钮指向主页。
我相信只有一种解决方案能够满足您的要求。那解决方案是301 /302旧URI到新URI,然后继续使用社交按钮的旧URI。所有主要的社交按钮都允许您指定喜欢/ g + / tweet /等的URL。这将保留您现有的社交分享计数,并且所有共享帖子仍将指向同一页面。现在选择是301还是302重定向。 302可能有助于保留当前的搜索位置,并且如果非常好,则可以避免失去排名。 301重定向(永久移动)将使搜索引擎开始索引新URL并删除旧URL。这个 威力 导致当前搜索排名下降。看来,就这篇文章而言,没有人会尊重任何形式的社交投票的重定向。
所以我认为 最安全的路线是302重定向 和 继续使用旧的URI进行社交投票。您将以这种方式保留您的资产,但必须维护您的重定向,并在旧的URI模板中投入更多资金。你的重定向是如何实现的?的.htaccess?还是在页面?您需要权衡您的案例的成本效益。
否则你应该301并开始使用社交按钮的新URI。在这种情况下,你可能会失去你的社会公平,但可以自由地建立新的,而不用担心弄乱任何东西。 如果您要替换的社会公平可以在6个月或更短的时间内收回,我就不会理会 并开始新鲜。
然而,这提出了一个有趣的观点。您提到以编程方式添加两个计数。是的,你可以把一些JavaScript放在一起添加几个计数,但我得问为什么?将它们添加在一起以进行可视化显示 实际上不会有助于提高推荐流量或搜索排名。所以它只是一个我认为不会帮助你的立面。如果你只是想让你的访问者认为你很受欢迎,那么为什么不只是生成一个不断计算的图像服务器端。 (糟糕的笑话,不要这样做!)底线你实际上无法重定向你的社会公平,你可能会假装移动它,但实际上你不能。
考虑到您的原始问题询问了几个社交按钮,重要的是要注意即使这些服务中的一个或两个在应用社交投票时开始尊重重定向,也不会减轻您做出上述决定的麻烦。您仍然需要重定向现有的反向链接,如果您支持页面上的多个社交按钮,则需要考虑所有社交按钮来选择重定向类型。
我不能说如何使用Twitter / G +但是对于Facebook这样做:
您无法“移动”网址之间的相似内容和评论,对于新内容,您绝对应该开始使用新网址,但对于现有网址,如果您符合以下条件,您仍可以使用原始内容,例如计数/评论:
- 继续将新URL上的Like按钮指向旧URL(即
<fb:like url="http://oldurl"/>
- 在重定向代码中添加一个例外,以便在Facebook的爬虫时(
facebookexternalhit/1.*
- 当前1.1)访问它,显示原始的开放图元标记集(这将保持描述,标题,缩略图等,像以前一样工作)
- 落在“旧”URL上的其他用户仍将被重定向到其新位置的内容
我对这个问题有一个真正的解决方案,它可能不是最传统的,但它确实可以100%工作。使用一个简单的jQuery插件调用 sharrre。请记住,我不是最好的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 ......你的新网址被锐化,来自不同社交网络的旧网址被添加到其中。
我不想说错了,但我认为你只需要在每个共享按钮中定义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并加载窗口小部件后的页面上,您可以附加自己的值。
希望这个帮助,无论如何我更喜欢第一种方式。
放入 head
新页面
<meta property="og:url" content="old_url_here"/>
这种方式Facebook属性喜欢旧页面。唯一的缺点是,当人们分享您的链接时,将包含旧的丰富代码段。