1

我一直在这个页面上工作 http://www.btselem.org/hebrew/131606

我决定添加 Facebook 分享按钮,但出于某种原因,每当我尝试分享时,Facebook 抓取工具都无法获取源中的任何元标记——它只显示网站的 URL。在 facebook 开发者调试工具中检查 URL 后,我得到了206 响应代码和以下错误:

无法下载 - 无法检索数据表单 URL

我还检查了“查看我们的抓取工具从您的 URL 中看到的确切内容”选项,似乎抓取工具只能读出以下行:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

奇怪的是,这甚至不是我在页面源中获得的 DOCTYPE。我已经尝试将 DOCTYPE 更改为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

在我阅读了一些较早的帖子后说这应该可以解决问题,但这也不起作用——我不断地从刮板那里得到同样的结果。如果你们有任何提示或想法,我将不胜感激……</p>

我发布了源代码的第一部分,至少包含元标记的部分。如有必要,我将添加整个代码。提前致谢,

大卫。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xml:lang="he" lang="he" dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>לקסיקון הכיבוש: 67 שניות על... מאחז |בצלם</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta property="fb:app_id" content="142675212478057"/>

<link rel="shortcut icon" href="/sites/all/themes/btselem/images/favicon.ico" type="image/x-icon" />
<meta property="og:site_name" content="בצלם" />
<meta property="og:title" content="מאחז | בצלם" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://www.btselem.org/hebrew/131606" />
  <link type="text/css" rel="stylesheet" media="all" href="/sites/default/files2/css/css_1458508373fb743060ffb80b43b3d59c.css" />
<link type="text/css" rel="stylesheet" media="print" href="/sites/default/files2/css/css_ff9c22380c0853814b0563da89e16090.css" />
4

3 回答 3

2

我刚才在尝试让 Facebook Scraper ( https://developers.facebook.com/tools/debug ) 读取我创建的对象图文件时遇到了这个确切的问题。当我的“<meta property=...”之前有空白(空格)时,刮板显示它正在将我的元视为 body 标签的一部分,而不是 head 标签的一部分。当我删除元标记之前的空白时,刮板可以正确地看到头部的元标记并且效果很好。出于好奇,我用制表符替换了我之前的 4 个空格宽度的空白,并且刮板能够正确看到内容。很奇怪。希望这对某人有帮助!

于 2012-11-09T20:10:51.040 回答
0

<!DOCTYPE>当我查看您文档的生成源时,您的标签前出现了一个空行。

206 响应代码通常表示请求者已取消传输。可能是空白行使 Facebook 解析器感到困惑,它只是放弃了。

我没有过多地使用 Drupal,但是在其他基于 PHP 的 CMS 系统中,这通常会发生,因为在标题呈现之前调用的 php 文件中的结束?>标记和标记之间存在空格。似乎一致认为,尽可能省略这些关闭 php 标记是最佳实践。EOF

在完成编辑所有 PHP 文件的过程之前,您可以通过复制此页面的源代码并将其保存为服务器上的静态 html 文件(不带空格)来测试这一点。看看这是否会被 Facebook 调试器解析。如果没有,那么你还有另一个问题。

于 2012-06-03T14:41:31.257 回答
0

看起来您正在尝试将元标记放入您的<body>标记中。

http://developers.facebook.com/tools/debug/og/echo?q=http%3A%2F%2Fwww.btselem.org%2Fhebrew%2F131606

<!DOCTYPE html>
<html>
<body>
<p>UBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</p>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

这不是格式良好的 HTML。修复 HTML 问题,然后 Facebook 应该能够正确地对您的页面进行 lint。

于 2012-06-04T23:49:19.083 回答