Facebook Open Graph Sharing调试器没有很好地阅读我的代码

时间:2016-12-22 21:29:47

标签: javascript php html facebook

当我在打开的图形调试器上检查我的网址并再次点击抓取时

https://developers.facebook.com/tools/debug/sharing/?q=https%3A%2F%2Fwww.tvsrbija.online%2Findex.php

我收到一个奇怪的错误

  

我们的页面在正文中有元标记,而不是头部。这可能是因为您的HTML格式错误,并且在解析树中它们的价格下降了。   请修复此问题以使标签可用。

但是当你查看源代码时,我的代码的所有内容都很好。 我试着抓空白的index.php文件,当我这样做时,这就是Facebook看到的

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head></html>

但是没有这样的代码,如果我去我网站的空白index.php页面并检查来源它是空白的......

但是,当我使用index.html而不是index.php Facebook看不到任何代码,因为它应该是一个空的index.php

问题是我的脚本是php而不是html因此我不能使用html扩展来修复问题。我甚至尝试重写.php扩展到HTML,因为我认为Facebook可能会以不同的方式处理它,但没有运气。 此外,我尝试暂停Cloudflare几天和同样的事情......

它有什么用?

编辑:在这里您可以看到Facebook如何查看我的源代码https://developers.facebook.com/tools/debug/echo/?q=https%3A%2F%2Fwww.tvsrbija.online%2Findex.php

2 个答案:

答案 0 :(得分:3)

在提供的源链接中,您的输出没有页眉。它必须具有有效的头部和主体节点才能成为有效的html标记。您可以在facebook提供的响应正文的前三行中看到这一点:

<!DOCTYPE html>
<html><body>
<p>&#65279;

Facebook可能会将您的<head>代码转换为<body>代码,因为您的来源不包含<body>。你的index.php页面应该像这样刮得正确:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body></body></html>

将来,使用w3c验证器验证您的html标记,以确保它是正确的:

https://validator.w3.org/

答案 1 :(得分:1)

尝试将编码更改为没有繁荣的UTF8,而不仅仅是utf8。对于许多开发人员而言,这一直是一个令人头痛的问题,因为utf8在文件指示文件为utf8之前添加了信息