【问题标题】:Facebook Open Graph Sharing Debugger not reading my code wellFacebook Open Graph Sharing Debugger 无法很好地阅读我的代码
【发布时间】:2017-05-08 14:19:19
【问题描述】:

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

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

【问题讨论】:

  • 有人评论(现在评论被删除了,我不知道是谁,所以我正在回复)并说我的 html 丢失了,我只用 &lt;!DOCTYPE html&gt; &lt;html&gt; 替换了 &lt;!DOCTYPE html&gt; &lt;!--[if lt IE 10 ]&gt; &lt;html lang="sr-RS" prefix="og: http://ogp.me/ns#" class="old-ie no-js"&gt; &lt;![endif]--&gt;&lt;!--[if !(IE 6) | !(IE 7) | !(IE 8) ]&gt;&lt;!--&gt;&lt;html lang="sr-RS" prefix="og: http://ogp.me/ns#" class="no-js"&gt; &lt;!--&lt;![endif]--&gt; 并没有'没有解决问题
  • 元标签需要在 中,在此之前你不能有任何东西。你有:&lt;body&gt; &lt;p&gt;&amp;#65279; &lt;!--[if IE 9 ]&gt;&lt;html class="no-js ie9"&gt;&lt;![endif]--&gt; &lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;!--&lt;![endif]--&gt; &lt;/p&gt;
  • 我没有,我提供的那个网址是 facebook 搞砸的来源我的真实来源你可以在浏览器中找到view-source:https://www.tvsrbija.online/

标签: javascript php html facebook


【解决方案1】:

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

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

Facebook 可能会将您的 &lt;head&gt; 标签转换为 &lt;body&gt; 标签,因为您的来源不包含 &lt;body&gt;。您的 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/

【讨论】:

  • 可能在某处回显换行符或空格,或者您在前面的脚本中某处有一个关闭的?&gt; 标记,其后有一个空格或换行符。在仅执行代码的文件中,您不需要结束标记,这样可以防止出现该问题。输出缓冲也可以用来防止这个问题。
  • 在您加载的第一个文件中,将ob_start(); 放在开头的某个位置。在您的文档类型之前,输入ob_end_clean();。这将丢弃任何可能以某种方式潜入的空格或其他垃圾。
  • 从 w3c 验证器看来,您有多个问题需要清理。 validator.w3.org/nu/…
  • 这可能会破坏它:The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment. At line 900, column 8 &lt;/div&gt;↩ &lt;!----End-wrap----&gt;↩
  • 我只是浏览 w3c 的列表并开始粉碎所有内容,直到它解决。 XML 可能是问题所在,或者是 doctype 的东西。
【解决方案2】:

尝试将编码更改为 UTF8,而不是仅使用 utf8。这一直是许多开发人员头疼的问题,因为 utf8 在文件指示文件是 utf8 之前添加了信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多