【问题标题】:Stop search engines to index specific parts of the page停止搜索引擎索引页面的特定部分
【发布时间】:2016-09-01 08:11:46
【问题描述】:

我有一个php 页面,可以呈现一本书,比如说 100 页。每个页面都有一个特定的网址(例如/my-book/page-one/my-book/page-two 等)。

翻页时,我使用历史 API 更改 url,使用 url.js

由于所有书籍内容都是从服务器端呈现的,问题是内容被搜索引擎索引(特别是我指的是谷歌),但 url 是错误的(例如它找到了一个 sn-p on page-two 但网址是 page-one)。

如何阻止搜索引擎(至少是谷歌)为页面上的所有内容编制索引,但只索引可见书页?

如果我以不同的方式呈现内容,它会起作用吗:例如,<div data-page-number="1" data-content="Lorem ipsum..."></div>,然后在 JavaScript 端将其更改为所需的格式?这会使页面变慢,实际上我不确定 Google 是否不会通过 JavaScript 索引更改的内容。

代码如下所示:

<div data-page="1">Page 1</div>
<div data-page="2">Page 2</div>
<div data-page="3" class="current-page">Page 3</div>
<div data-page="4">Page 4</div>
<div data-page="5">Page 5</div>

那么只有可见的 div 是 .current-page 一个。相同的内容在多个 url 上提供,因为这是用户可以在页面之间翻页所必需的。

例如,/book/page/3 将呈现这段 HTML,而 /book/page/4 呈现相同的内容,唯一的区别是添加到第 4 个元素的 current-page 类。

Google 确实索引了不同的 url,但它做错了:例如,sn-p Page 5 链接到 /book/page/2,它呈现给用户 Page 2(不是 Page 5)。

如何告诉 Google(和其他搜索引擎)我只对索引 .current-page 中的内容感兴趣?

【问题讨论】:

  • 您可以使用robots.txt 告诉Google。 AFAIK 谷歌尊重它。最有可能的是建立一个sitemap.xml 并告诉谷歌索引什么和不索引什么会更好。您还可以使用 Google 的网站管理员工具来推送更改,并查看 Google 是如何抓取您的网站的。
  • 问题是如何?我不确定这些是否可行。简而言之,我在不同的 url 上提供相同的 HTML,但我只显示它的特定部分,具体取决于 url。
  • 你能举一个错误的 url 被错误索引的例子吗?或者你在元素上做改变?
  • @OBender 假设我在页面42 上有Hello World(在网址/my-book/page/42 下)。 Google 很有可能在另一个 url(显然是另一个页面)上索引此内容,例如,/my-book/page/7。发生这种情况是因为我在多个 url 上提供相同的内容。我不知道如何解决这个问题......
  • 你的意思是: /my-book/page/42 和 /my-book/page/7 有相同的内容吗?

标签: javascript php html seo


【解决方案1】:

据我了解,他的问题是您的许多网址都有相同的内容。 喜欢:

www.my-awesome-domain.com/my-book/page/42

www.my-awesome-domain.com//my-book/page/7

还有 页面的可见内容可通过 JavaScript 进行调整,当用户单击您网站上的某些元素时执行该内容。

在这种情况下,您需要做两件事:

  1. 以本 google 文档中描述的任何方式将您的 URL 标记为规范页面:https://support.google.com/webmasters/answer/139066?hl=en
  2. 您需要添加一个功能,在整个页面刷新后,每个页面都将加载到相同的状态,例如您可以在导航时使用哈希参数,如文章here:或这里是overview of the technique

今天 google bot 正在执行其官方博客中宣布的 JavaScript: https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html

因此,如果您在点击刷新 (F5) 并指定规范页面属性时实现正确的页面行为,页面将被正确抓取,并且当您点击链接时,您将到达链接页面。

如果您需要更多指导如何在 url.js 中执行此操作,请发布另一个问题(以便为其他人正确记录),我很乐意提供帮助。

【讨论】:

  • 你能给我举个例子,代码是什么样子的吗?我不确定规范的 url 在这里会有什么帮助。如何使url和页面右侧可见的链接?
  • Canonical Url 将消除对多页重复内容的惩罚,您需要为每个图书列表制作 1 页。另一个将是此页面的规范。您使用什么代码来隐藏和显示每本书的内容?我会建议如何修改它
  • 假设我有隐藏的 div,其中一个是可见的,包含页面内容。我不确定您所说的为每个书目列表制作一页是什么意思。
  • 好的,所以让它们在页面加载时可见关于“每本书列表一页”。所有页面都具有相同的内容吗?或者你有一个类别有这么多 div,然后每本书显示 1 个 div?
  • 我无法让它们可见,因为这不是我想要的。我想根据 url 显示一个页面,然后允许用户浏览页面。
【解决方案2】:

答案很简单:你做不到。将相同的内容保留在不同的 URL 下并要求搜索引擎仅索引其中的一部分,在技术上是不可能的。

如果您同意只将一页编入索引,则可以按照之前的建议使用规范 URL。您将链接到主页的规范 URL 放置在每个子页面上。

您可能会发现“黑客”使用了用于 Google Search Appliance 的特殊标签:googleongoogleoff

https://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html

唯一的问题是这很可能不适用于 Google Bot(至少没有人会保证它会)或任何其他搜索引擎。

【讨论】:

  • 我可能会退回到在用户交互时呈现内容(来自 JS),所以无论如何应该有一个解决方案。我对最佳解决方案感兴趣。
【解决方案3】:

我不认为你将能够实现你正在寻找的东西。

我看不出 robots.txt 会产生什么影响。规范标签不适用于 div。

Google 过去曾谈论过此类网站,并提出了一些索引建议,这里有几个链接可能会有所帮助:

https://www.seroundtable.com/seo-single-page-12964.html

https://www.seroundtable.com/google-on-crawling-javascript-sites-progressive-web-apps-21737.html

【讨论】:

    【解决方案4】:

    将内容保存在 JSON 文件中,您在 HTML 中 呈现该文件。从服务器只提供正确的页面:用户可见的内容。

    当用户单击按钮(上一页/下一页链接等)时,使用 JavaScript 呈现您拥有 JSON 文件的内容并像您已经在做的那样更改 url。

    这样您就知道您始终从服务器提供正确的内容,并且 Google bot 显然会正确索引页面。

    【讨论】:

    • 这似乎行不通。 SPA 的兴起使得搜索引擎在索引 JS 生成的内容方面投入了大量精力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多