有没有办法让facebook糟糕的Open Graph元标签来验证我的文档类型是不是<!DOCTYPE html>
(HTML5)?
除了facebook的Open Graph meta标签之外,我的文档可以完美地验证。
我真的不想使用<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
,因为它会产生一系列新的问题。
以下是一个有问题的验证错误的示例...
错误行11,列47:此时不允许对元素meta使用属性属性。
<meta property="og:type" content="website" />
任何帮助都将不胜感激。我断断续续地找了好几天,都没有结果。
发布于 2011-11-16 22:23:44
只有当facebook扫描页面中的这些标签时,才需要这些元标签。
<?
if(eregi("facebookexternalhit", $_SERVER['HTTP_USER_AGENT'])){
echo '<meta property="og:type" content=xxxxxxxxxxxxx';
// continue with the other open graph tags
}
?>
上述标签只有在facebook需要它们的时候才会出现-- PHP的这种方法将它们完全移除,用于所有其他实例,包括W3C验证。
发布于 2013-08-09 01:40:16
这里的许多答案已经过时了。请不要窥探标头或通过JavaScript写入(因为处理器可能不会计算JS)。
称为RDFa 1.1和RDFa Lite1.1(请参阅http://www.w3.org/TR/rdfa-lite/和http://www.w3.org/TR/rdfa-primer/ )的W3C推荐标准(对HTML5的扩展)使"property“属性有效且一致。同时(因为这里是较老的答案),验证器http://validator.w3.org/check将该属性识别为有效。此外,开放图形协议文档http://ogp.me/已经更新,以反映RDFa 1.1 (它使用“前缀”属性)。
W3C的工作已经完成,其中包括来自OpenGraph和schema.org的输入,以解决此问题所引发的问题。
简而言之,确保你的OG标签符合RDFa,你就是黄金用户。
发布于 2012-02-11 15:09:47
一年多过去了,我们得到的最佳解决方案是将元标记封装在某种类型的服务器端验证中。
在PHP中,我做到了:
<?php if (stristr($_SERVER["HTTP_USER_AGENT"],'facebook') !== false) { ?>
<meta property="og:title" content="Title of the page" />
<meta property="og:url" content="http://www.example.com/" />
<meta property="og:type" content="website" />
<meta property="fb:admins" content="123456789" />
<meta property="og:image" content="http://www.example.com/images/thumb.jpg" />
<?php } ?>
这对Facebook来说真的很有效。但是我真的不喜欢这个主意!
https://stackoverflow.com/questions/6501189
复制相似问题