停止搜索引擎索引页面的特定部分

时间:2016-05-06 09:46:58

标签: javascript php html seo

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

翻页时,我使用url.js使用历史记录API更改网址。

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

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

如果我以不同的方式呈现内容,它会起作用吗:例如,<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。相同的内容在多个网址上提供,因为用户可以在页面之间切换。

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

Google确实为不同的网址编制索引,但确实错了:例如,代码段Page 5链接到/book/page/2,向用户呈现Page 2(不是Page 5

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

5 个答案:

答案 0 :(得分:5)

据我所知,他的问题是你对很多网址都有相同的内容。 像:

  

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

     

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

而且 页面的可见内容可通过JavaScript进行调整,即用户在点击您网站上的某些元素时执行。

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

  1. 以此google文档中描述的任何方式将您的网址标记为Canonical网页:https://support.google.com/webmasters/answer/139066?hl=en
  2. 您需要添加一个功能,在完整页面刷新后,每个页面都会加载到相同的状态,例如,您可以在文章here中按照预期导航时使用哈希参数:或者这里是{{3} }
  3. 今天google bot正在他们的官方博客中宣布执行JavaScript: overview of the technique

    因此,如果您在点击“刷新”(F5)时获得正确的页面行为并且将指定规范页面属性,则会正确地抓取页面,当您按照该链接进行链接页面时,您将获得正确的页面行为。

    如果您需要更多指导如何在 url.js 中发布,请发布另一个问题(因此将为其他人提供正确的文档),我将很乐意为您提供帮助。

答案 1 :(得分:4)

回答非常简单:你不能这样做。没有技术可能将相同的内容保存在不同的URL下,并要求搜索引擎仅对其中的一部分进行索引。

如果您只有一个索引页面,那么您可以使用规范网址,如前所述。您可以在每个子页面上放置链接到主页面的规范URL。

你可能会发现&#34; hack&#34;它使用用于Google Search Appliance的特殊标记:googleongoogleoff

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

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

答案 2 :(得分:2)

如果您专门定位Google,则可以使用“googleoff”指令

请参阅Excluding Unwanted Text from the Index

  

关闭所有属性。标签之间的文本未编入索引,与锚文本无关,或用于代码段。

<!--googleoff: all--><div data-page="1">Page 1</div>
<div data-page="2">Page 2</div><!--googleon: all-->
<div data-page="3" class="current-page">Page 3</div>
<!--googleoff: all--><div data-page="4">Page 4</div>
<div data-page="5">Page 5</div><!--googleon: all-->

如果你想隐藏其他搜索引擎的文字,你应该使用javascript替代方案,例如,当用户点击按钮时,从ajax请求加载DOM中的下一页或上一页。

答案 3 :(得分:2)

我认为你无法实现你想要的目标。

我无法看到robots.txt会有什么影响。 Canonical标签不适用于div。

谷歌过去曾谈到这类网站,并提出了一些索引建议,以下是一些可能有帮助的链接:

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

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

答案 4 :(得分:2)

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

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

这样你知道你总是从服务器提供正确的内容,谷歌机器人显然会正确地索引页面。