显示标签为“SEO”的博文。显示所有博文
显示标签为“SEO”的博文。显示所有博文

2023年6月28日星期三

WordPress设置robots.txt的最佳方法

很久以前我就设置了博客的robots.txt,想让搜索引擎只抓取网站中关键的内容,不抓取后台的文件和页面。这样做的原因如下:

搜索机器人对每个网站都有一个爬网配额,这意味着它们在爬网会话期间对一定数量的网页进行爬网。如果他们没有完成对您网站上所有网页的抓取,那么它们将在下一个会话中返回并恢复抓取。这可能会减慢网站索引的速度。

您可以通过禁止搜索机器人尝试抓取不必要的页面(如 WordPress 管理页面、插件文件和主题文件夹)来解决此问题。通过禁止不必要的网页,可以节省搜索引擎爬网配额。这有助于搜索引擎抓取网站上的更多页面并尽快将其编入索引。

我在网上各处寻找robots.txt的设置方法,取各家之长最终将robots.txt设置如下(注意现在这个方法已经过时了):

User-agent: *Disallow: /wp-admin/Disallow: /wp-content/Disallow: /wp-includes/Disallow: /trackback/Disallow: /comments/Disallow: /attachment/Disallow: /comments/feedDisallow: /feedDisallow: /*/feedDisallow: /*/comment-page-*Disallow: /*?replytocom=*Disallow: /*/trackbackDisallow: /?s=*Disallow: /*/?s=*\Disallow: /wp-*.php

最近我才知道这样设置robots.txt已经是不对的(过时了),因为搜索引擎在不断进步,上面那样设置robots.txt反而不利于搜索引擎索引。而且即使一个页面被robots.txt阻止了,它可能仍会被编入索引,如果不想让它被搜索引擎索引,最好的方法是在页面上放置noindex元标记。

因为WordPress已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域,所以,对于WordPress,设置robots.txt最好的示例如下(对于所有爬虫程序不受限制地自由抓取这个网站):

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

以下内容来源自:https://yoast.com/ultimate-guide-robots-txt/

robots.txt优点:管理爬网预算

通常可以理解,搜索蜘蛛到达一个网站时,会预先确定它将抓取多少页面(或它将花费多少资源/时间,基于网站的权威/大小/声誉,以及服务器的响应效率)。SEO称之为爬行预算。

如果您认为您的网站存在抓取预算问题,阻止搜索引擎将精力「浪费」在网站的不重要部分可能意味着专注于重要的部分。

有时阻止搜索引擎抓取您网站有问题的部分可能是有益的,尤其是在必须进行大量 SEO 清理的网站上。整理好东西后,您可以让它们重新进入。

robots.txt缺点:不从搜索结果中删除页面

即使您可以使用robots.txt文件告诉爬虫它不能在您的网站上的位置,您也不能使用它向搜索引擎说哪些URL不会显示在搜索结果中。换句话说,阻止它不会阻止它被索引。如果搜索引擎找到足够的指向该 URL 的链接,它将包含它;它只是不知道该页面上的内容。

如果您想可靠地阻止网页出现在搜索结果中,请使用noindex元标记。这意味着要找到该标记,搜索引擎必须能够访问该页面,因此不要用robots.txt阻止它。 

使用 noindex 阻止搜索引擎编入索引(https://developers.google.cn/search/docs/crawling-indexing/block-indexing?hl=zh-cn)

noindex 是一个包含 <meta> 标记或 HTTP 响应标头的规则集,用于防止支持 noindex 规则的搜索引擎(例如 Google)将内容编入索引。当 Googlebot 抓取该网页并发现该标记或标头时,Google 就会完全阻止该网页出现在 Google 搜索结果中,不论是否有其他网站链接到该网页。

不要在robots.txt中阻止CSS和JS文件

自2015年以来,Google Search Console警告网站所有者不要阻止CSS和JS文件。多年来,我们一直告诉你同样的事情:不要在你的robots.txt中阻止CSS和JS文件。让我们解释一下为什么您不应该阻止Googlebot的这些特定文件。

通过阻止CSS和JavaScript文件,您可以阻止Google检查您的网站是否正常运行。如果您屏蔽了文件中的 CSS 和 JavaScript 文件,Google 将无法按预期呈现您的网站。现在,谷歌无法理解您的网站,这可能会导致排名降低。此外,甚至像 Ahrefs 这样的工具也会渲染网页并执行 JavaScript。所以,如果你想让你最喜欢的SEO工具工作,不要阻止JavaScript。

这与谷歌变得更加「人性化」的普遍假设完全一致。谷歌希望像人类访问者一样查看您的网站,以便它可以区分主要元素和附加元素。谷歌想知道JavaScript是增强了用户体验还是破坏了用户体验。

robots.txt缺点:不传播链接值

如果搜索引擎无法抓取网页,则无法将链接值分布在该网页上的链接中。当你在robots.txt中阻止了一个页面时,这是一个死胡同。任何可能流向(和流经)该页面的链接值都将丢失。

传统上,WordPress喜欢阻止对wp-admin和wp-include目录的访问。 但是,这已经不再被视为最佳实践。

以下内容来源自:https://kinsta.com/blog/wordpress-robots-txt/#what-to-put-in-your-robotstxt-file

robots.txt并不是控制搜索引擎索引哪些页面的万无一失的方法。如果您的主要目标是阻止某些页面包含在搜索引擎结果中,正确的方法是使用noindex元标记或密码保护。

这是因为你的robots.txt并没有直接告诉搜索引擎不要索引内容——它只是告诉他们不要抓取它。虽然 Google 不会从您的网站内部抓取标记区域,谷歌自己声明如果外部网站链接到您使用 robots.txt 文件排除的网页,Google 仍可能会将该网页编入索引。

谷歌网站管理员分析师约翰·穆勒(John Mueller)也证实,如果一个页面有指向它的链接,即使它被 robots.txt阻止了,可能仍会被编入索引。

以下内容来源自:https://yoast.com/wordpress-robots-txt-example/

搜索引擎不断改进他们抓取网络和索引内容的方式。这意味着几年前曾经是最佳实践的东西可能不再有效,甚至可能损害您的网站。

如今,最佳实践意味着尽可能少地依赖robots.txt文件。只有当您遇到复杂的技术挑战(例如,具有分面导航的大型电子商务网站)或没有其他选择时,才真正需要robots.txt文件中的URL。

通过robots.txt阻止URL是一种“蛮力”方法,可能会导致比解决更多的问题。

对于大多数WordPress网站,以下示例是最佳实践:

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

这段代码有什么作用?

  1. User-agent: * 该指令指出,以下任何说明适用于所有爬网程序。
  2. Disallow: 该指令没有进一步的说明,所以我们说,所有爬虫都可以不受限制地自由抓取这个网站。
  3. 在robots.txt文件中,我们还链接到XML站点地图的位置,使Google,Bing和其他搜索引擎更容易找到它。
  4. 我们还为查看文件的人提供了一些信息(链接到此页面),以便他们了解我们为什么以这种方式设置文件。

WordPress和Yoast SEO已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域(通过x-robots HTTP标头)。

robots.txt创造死胡同

搜索引擎需要发现、抓取和索引您的页面,然后您才能在搜索结果中争夺可见性。如果您通过 robots.txt 阻止了特定网址,搜索引擎将无法再抓取这些页面以发现其他网址。这可能意味着关键页面不会被发现。

robots.txt否认其价值

SEO的基本规则之一是来自其他页面的链接会影响您的表现。如果某个网址被阻止,搜索引擎不仅不会抓取它,而且还可能不会分发指向该网址或通过该网址网站上其他页面的任何“链接值”。

谷歌完全呈现您的网站

人们过去常常阻止对CSS和JavaScript文件的访问,以使搜索引擎专注于那些最重要的内容页面。如今,谷歌获取你所有的样式和JavaScript,并完全呈现你的页面。了解页面的布局和呈现方式是评估质量的关键部分。所以谷歌不喜欢你拒绝它访问你的CSS或JavaScript文件。

以前阻止访问您的目录和插件目录的最佳实践不再有效,这就是为什么我们与 WordPress 合作删除了 4.0 版的默认禁止规则。

链接到您的 XML 站点地图有助于发现

robots.txt 标准支持将指向 XML 站点地图的链接添加到文件中。这有助于搜索引擎发现您网站的位置和内容。

这可能感觉是多余的,因为您应该已经将站点地图添加到Google Search Console和Bing网站管理员工具帐户中,以访问分析和性能数据。但是,在robots.txt 中拥有该链接为爬虫提供了一种万无一失的方式来发现您的站点地图。

2011年6月27日星期一

我来看SEO

在我刚开始写博客的时候,也就是博客建立之初,整个博客几乎没人访问,每天也只有三五个误入到此的人停留片刻。这三五个人几乎都是通过搜索引擎到来的,我当时就在想,为什么只有这么点人,难道是我的网站对搜索引擎不够友好?于是开始学习搜索引擎优化(SEO)的知识,希望以此来给网站带来流量。

这件事开始做起来还是挺带劲的,渐渐地对博客的打理越来越少了,也就是想写文章时上来写点东西,对于这件事却早已忘记了。

今天在等公交时,有人分发免费杂志,我随手接了一本,发现是“现代医院”的杂志,内容大多是描述男人和女人的事,一方面大肆得描述婚外情、性行为、性技巧等令人激动的内容,另一方面大篇幅介绍通过上述行为获得疾病后的治疗途径——到“现代医院”去。我本来对这本杂志不感兴趣,只是奇怪的是这样明目张胆地行骗却没人去制止。

翻到杂志最后看到一则这家医院的招聘启事,招聘“网络优化和推广人员”。具体的要求是:了解搜索引擎原理、优化及相关技巧;熟悉使用SEO工具,能针对关键词优化进行合理内容涉及;熟悉网站间流量合作业务,拥有丰富的外链获取经验,能够快速高效的获取优质外链资源。

我还是第一次看到关于网站SEO的优化要求,这是一个为了优化而去优化,完全不顾内容质量的行为。试想网络中的网站都不管内容而只靠优化在搜索引擎的排名,那么我们整天接触到的信息又有多么的龌龊呢。

一个良好的搜索引擎应该更关注于网站的内容,同时大力打击这些靠优化而获得超前排名的网站以更好地服务于搜索引擎使用者。这样的搜索引擎才是一个诚实的关注信息质量的好的指路人,而不是依靠排名赚昧心钱生儿子没屁眼的道德低下的从业者。

2010年10月21日星期四

All in One SEO中文博客的设置

静风博客自从更换域名以来,Google收录一直稳中有升,百度却一直不见涨,只收录个首页,于是心急找问题。

在网上看到了All in One SEO与百度收录的论战。正方反方都有。一方说它是WordPress最佳的使用最多的对SEO有效的插件,推荐使用;另一方说它对百度收录有影响,推荐不要使用。

综合以上观点,我的做法是使用+设置。(设置主要集中在复选框的勾选上)

Canonical URLs和Rewrite Titles需要勾选,这也是我们使用这个插件的主要功能。

Use Categories for META keywords不要勾选,会使得一个目录下所有文章都会重复一个关键词。

下面是针对百度的

Use noindex for Categories、Use noindex for Archives、Use noindex for Tag Archives不要勾选,据说这就是影响百度不收录的原因。

下面是针对中文博客的

Autogenerate Descriptions不勾选,针对中文博客来说,它并不能自动生成描述内容。也就是对中文无效,会生成空白的描述,这样反而会影响收录。

Capitalize Category Titles不勾选,会导致中文博客的Tag标签第一个字显示为乱码。

参考:

  1. http://www.tuixy.com/?p=1727

  2. http://passtest.net/2010/02/all-in-one-seo-pack-tag-luanma/

2010年6月23日星期三

SEO优化之H1标签

搜索引擎优化(SEO)就是把网站做得有条理,使得搜索引擎很容易的找到有用的信息。我们都知道Title标签在SEO中占有很重要的位置,H1,H2,H3……同样也是,搜索引擎对于标记了h1的文字给予的权重比其它文字的都要高,这些标签在SEO权重是逐级递减的,就是说h1>h2>h3……>h6.


根据w3cschool.com的说明,h1标签 - h6标签可定义标题,h1标签定义最大的标题,h6标签定义最小的标题。网页中使用H1-H6标签就如word里使用标题一样,合理的使用可以明确地表达网页(文章)的结构。但是,如果这些标签的数量多了,就会稀释了他们的权值,那样反而适得其反,可能会被认为优化过度,建议在页面中最好使用1个H1标签,5~7个其他标签。


知名网页设计师 “Jeffrey Zeldman” 的博客应该是 Web 标准的典范,他使用的定义方式大家应该都比较熟悉,使用 h1 定义网站标题,使用 h2 来定义文章标题和侧边栏目标题,h3 就用来定义文章时间。而 WordPress 默认模板也是选用这个方式来定义的。

也可以从 2 个方面来看文章标题的定义:

1、按照内容的重要性来定义,如:Official Google Reader Blog

使用 h1 定义网站标题使用 h2 定义文章标题使用 h3 定义栏目标题

2、按照网站的层次来定义,如:Official Google Blog

使用 h1 定义网站标题使用 h2 定义栏目标题使用 h3 定义文章标题

2010年6月21日星期一

动态网址、静态网址和伪静态网址

这一段时间总在研究动态网址、静态网址和伪静态网址的问题。网站刚建起来,百度两天就收录了(只是首页),谷歌总没有见起色,每天就site一下,还是什么也没有。于是就上网找问题,在一篇文章中看到,搜索引擎(SE)在处理动态网址时,如www.example.com/detail.php?id=33,SE为了避免查询数据库的陷阱,遇到?就停止查找了(后面转贴的文章可以看出这种观点不正确)。突然觉得问题的严重性了,我的网站都是些动态的网址,难道是这个原因谷歌才没有收录吗。接着就上网寻找动态网址生成静态网址的方法。

之后知道生成静态网址分为真正的静态网址和伪静态网址。真正的静态网址就是这个网页确实存在,URL真正的指向它。伪静态网址,是看起来像静态网址实际上不是。开始想把网页生成真正的静态网址,虽然实施起来不是太困难,PHP也有简单的方法来实现。总感觉对于访问量小的网站开销太大,而且删除编辑起来也会不方便。所以就采用简单的生成伪静态的网址的方法,PHP可以采用伪静态使用.htaccess来重定位就行了。

今天看到了谷歌官方的对静态网址和动态网址的解释说明。看起来像论文,老外写文章总是这么有条理,说的也比较清楚。下面转贴出来,奇文共欣赏。

在跟网络管理员沟通时经常会出现这种情形,一些广为传播的理念可能在过去是正确的,但是可能已不再切合目前的情况了。当我们最近在跟几个朋友谈及关于网址的结构时就碰到这种情况。其中一个朋友很担心动态网址的使用,甚至认为“搜索引擎无法处理动态网址”。另外一个朋友觉得动态网址对搜索引擎来说完全不是问题,那些都是过去的事了。还有一个甚至说他从来都搞不懂动态网址和静态网址相比有什么区别。对于我们来说,这一刻使我们决定要好好研究一下动态网址和静态网址这个话题。首先,让我们来界定一下我们要谈论的主题:

什么是静态网址?
一个静态网址,顾名思义,就是一个不会发生变化的网址,它通常不包含任何网址参数。例如:http://www.example.com/archive/january.htm。您可以在搜索框里输入 filetype:html 在谷歌上搜索静态网址。更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。这也是为什么网站管理员们在处理大型的、经常更新的网站,像在线购物网站、论坛社区、博客或者是内容管理系统时,会使用动态网址的原因。

什么是动态网址?
如果一个网站的内容存储于一个数据库,并且根据要求来显示页面,这时就可以使用动态网址。在这种情况下,网站提供的内容基本上是基于模板形式的。通常情况下,一个动态网址看起来像这样:http://code.google.com/p/google-checkout-php-sample-code/issues/detail?id=31。您可以通过寻找像? = & 这样的符号识别出动态网址。动态网址有一个缺陷是不同的网址可以拥有相同的内容。这样导致不同的用户可能链向含有不同参数的网址,但是这些网址却都含有相同的内容。这也是为什么网络管理员有时候想要将这些动态网址重写成静态网址的原因之一。

我是不是应该让我的动态网址看起来是静态的呢?
在处理动态网址时,希望您能了解以下几点事实:

  1. 要正确地生成和维护从动态网址到静态化网址的重写转变实际上是一件很难的事情。

  2. 将原始的动态网址提供给我们会比较安全,请让我们来处理诸如探测和避开那些有问题的参数的事情。

  3. 如果您想重写网址,请去掉那些不必要的参数,同时请保持它动态网址的样子。

  4. 如果您想提供一个静态网址代替动态网址,那么您应该切实地生成相应的静态内容。


静态和动态网址,Googlebot对于哪一个识别得更好呢?
我们碰到过很多网站管理员,像我们的朋友那样,认为静态或者看起来是静态的网址对于网站的索引和排名是有优势的。这种看法是基于这样一个假设,即认为搜索引擎在抓取和分析含有会话标识(session ID)和来源追踪器(source tracker)的网址时是有问题的。然而,事实是,谷歌在这两个方面都有了相当的进展。就点击率来说,静态网址可能略微有些优势,因为用户可以很容易地读懂这个网址。但是,就索引和排名来说,使用数据库驱动网站并不意味着明显的劣势。相比较将参数隐藏以使他们看起来是静态的网址来说,我们更希望网站将动态的网址直接提供给搜索引擎。

现在,让我们来看一些有关动态网址的广为传播的看法,并且来纠正一些蒙蔽网站管理员的假说。:)

传说:“动态网址不能被抓取。”
事实:我们可以抓取动态网址并且解释不同的参数。如果您为了让网址看起来像是静态的,而隐藏那些可以给谷歌提供有价值信息的参数,这样做反而会给该网址的抓取和排名带来麻烦。我们的建议是:请不要将一个动态网址改换格式以使其看起来是静态的。尽可能地使用静态网址来显示静态内容是可取的,但在您决定展示动态内容的情况下,请不要将参数隐藏起来从而使他们看起来像是静态的,因为这样做会删除掉那些有助于我们分析网址的有用信息。

传说:“动态网址的参数要少于3个。”
事实:对于参数的数量是没有限制的。但是,一个好的经验是不要让您的网址太长(这个适用于所有的网址,不论是静态的还是动态的)。您可以去掉一些对于Googlebot来说不重要的参数,给用户一个好看一点的动态网址。如果您不能确定可以去掉哪些参数,我们建议您将动态网址中所有的参数都提供给我们,我们的系统会弄明白哪一些是不重要的。将参数隐藏起来会影响我们正确地分析您的网址,我们也就不能识别这些参数,一些重要信息可能也因此丢失了。

下面一些是我们认为您可能会存在疑问的一些问题。

这是否意味着我应该完全避免重写动态网址?
这是我们的建议,除非您能确保您只是去掉多余的参数,或能够把所有有可能有不良影响的参数完整地删除。如果您把自己的动态网址任意修改使其看起来像是静态的,您要清楚这样做是有风险的,有可能会导致有些信息不能被正常地编译和识别。如果您想给您的网站再增加一个静态的版本,请您一定要提供一个真正意义上的静态的内容,比如生成那些可以通过网站相应路径而获取的文件。如果您仅仅是修改了动态网址的表现形式,而没有真正提供静态的内容,那么您有可能适得其反。请直接把标准的动态URL提供给我们,我们会自动找出那些冗余的参数。

你能给我举一个例子么?
如果您有一个像下面这样标准格式的动态网址:foo?key1=value&key2=value2,我们建议您不用改动它,谷歌会决定哪些参数可以去掉;或者您可以为用户去掉那些不必要的参数。不过要慎重,仅仅去掉那些不重要的参数。这里有一个含有多个参数的动态网址的例子:

www.example.com/article/bin/answer.foo?language=en&answer=3&sid=98971298178906&query=URL

  • language=en – 标明这篇文章的语言

  • answer=3 – 这篇文章含有数字3

  • sid=8971298178906 – 会话标识代码是8971298178906

  • query=URL – 使这篇文章被找到的查询是[URL]


并不是所有的参数都提供额外的信息。所以将这个网址重写为www.example.com/article/bin/answer.foo?language=en&answer=3 可能不会引起任何问题,因为所有不相关的参数都去掉了。

下面是一些经过认为修改而看起来像是静态网址的例子。相比较没有重写、直接提供动态网址来说,这些网址可能会引起更多抓取方面的问题。

  • www.example.com/article/bin/answer.foo/en/3/98971298178906/URL

  • www.example.com/article/bin/answer.foo/language=en/answer=3/ sid=98971298178906/query=URL

  • www.example.com/article/bin/answer.foo/language/en/answer/3/sid/ 98971298178906/query/URL

  • www.example.com/article/bin/answer.foo/en,3,98971298178906,URL


如果您将动态网址重写成如上所述的示例的话,可能会导致我们很多不必要的抓取,因为这些网址中都含有会话标识(sid)和查询(query)参数的可变值,这无形中生成了很多看起来不同的URL,而他们包含的内容却是相同的。这些格式让我们很难理解通过这个网址返回的实际内容和参数URL以及98971298178906是无关的。不过,下面这个重写的例子却将所有无关的参数都去掉了:

  • www.example.com/article/bin/answer.foo/en/3


尽管我们可以正确地处理这个网址,我们还是不鼓励您使用这样的重写。因为它很难维护,而且一旦一个新的参数被加到原始的动态网址,那么这个网址就需要马上更新。不这样做的话就会再次导致生成一个隐藏了参数的貌似静态网址的URL。所以最好的解决方法是通常将动态网址保持他们原来的样子。或者,如果您去掉不相关的参数,请记住一定要保持这个网址是动态的:

  • www.example.com/article/bin/answer.foo?language=en&answer=3


我们希望这篇文章能够对您和我们的朋友有帮助,使围绕动态网址的各种推测清晰化。如果您有更多的问题的话,欢迎加入我们的网站管理员支持论坛进行讨论。