近期对这个小站进行梳理,毕竟大半年了除了发帖不理不问,还是会积累下一些问题的。使用 semrush 和 ahrefs 爬取一遍,主要的 issue 就是 meta 重复、标签混乱等。站内网盘下载链接索引在搜索引擎爬虫看来反而不是问题,但老E认为是无意义的索引,并不是所谓 SEO 的降权,而是因为在结构上属于站内内容(路径反代的结果),但内容上是物理隔离的、完全独立的,并且与站点主题关联不大。所以,对于路径划分的子站,需要通过 noindex 避免搜索引擎索引,避免让人误以为这个是个工具下载站。
本文仅为记录,可以作为存在同样问题的站点的参考。同时,据了解 wordpess 站点在使用第三方主题、安装有 seo 插件的情况下会产生很多重复内容,重复内容并不会对站点造成损害,除非它是垃圾内容或关键字滥用与填充,并且 Google 往往会忽略重复内容。 但是,与其让搜索引擎确定重复页面中的哪些页面很重要,不如让我们仅希望搜索引擎为帖子和页面建立索引,而不是类别、标签或档案或其他任何脱离站点主题的内容。
搞清楚在做什么
如果没有阻止全站或子站索引的特殊需求,千万不要尝试本文内容。要保持全站的“不可见”,在wordpress 中勾选『建议搜索引擎不索引本站点』将开启全站的 noindex,而且 wordpress 中此选项优先级很高,一旦打开就非常顽固,单独对主题、页面的配置都不会发生变化。
默认情况下,我们是希望全站都是对搜索引擎、用户可见的,并需要搜索引擎编制索引、呈现搜索结果,但也会有一些例外的内容,包括但不限于:
- 后台管理页面与某些功能/页面的隐蔽入口
- 独立的、与站点主题关联不大、甚至会干扰主题内容引发困惑的内容(如本站的工具下载)
- 不适合被索引的内容
- 其他合理的保护性措施,如对 DMCA 的规避
要注意的是,如果配置不当,会使得站点对搜索引擎不友好,典型的是网站的 robots.txt 文件中设置了禁止某些网页被抓取收录,就可能会出现“网址已提交,但带有noindex标记”的错误。
页面搜索结果呈现
noindex 标签
noindex 是一个包含 <meta> 标记或 HTTP 响应标头的规则集,用于防止搜索引擎将内容编入索引。当 爬网机器人抓取该网页发现该标记或标头时,搜索引擎会完全阻止该网页出现在搜索结果中,不论是否有其他网站链接到该网页。也就是说对于具体的某个页面,可以使用meta标记要求所有的搜索引擎丢弃搜索结果。当然,并不是所有的搜索引擎都那么规矩。
<meta name="robots" content="noindex">
如果仅仅限制googlebot爬取该页面,则使用以下HTML代码。
<meta name="googlebot" content="noindex">
X-Robots 标头
除上述 meta 元描述种的 noindex 标签外,可以在 HTTP 响应中返回值为 noindex 或 none 的 X-Robots-Tag 标头,而不是 <meta> 标记。 与 noindex 标签不同,响应标头可用于非 HTML 资源,例如 PDF、视频文件和图片文件。
HTTP/1.1 200 OK (...) X-Robots-Tag: noindex (...)
最常见的问题:robots.txt 设置了 Disallow
某些搜索引擎对 noindex 规则会有不同的解读。因此,如果测试发现仍然出现在搜索引擎的结果中,这时不可简单粗暴地编辑 robots.txt 文件,阻止搜索引擎爬取页面。搜索引擎爬取不到页面,就不可能检索到 noindex 标签,这样之前的错误或问题永远不会得到修正。
User-agent: * Disallow: /URLs/
另外,谷歌曾经支持过在 robots.txt 中设置 noindex,但早已正式地取消了支持这样的配置方法。
整体配置
独立页面的设置可以通过插件实现 noindex 功能。要对整个站点/子站的所有 URL 逐一应用标签是不可能的,整体添加或编辑页面 noindex ,对应于上述两种途径,以 wordpress 站点为例,可进行如下操作。
后端PHP
在站点的后台管理面板中,左侧导航栏找到『外观』,打开『主题文件编辑器』,找到并将以下代码插入 header.php 中。
<?php // Do not index author, date archive, category, tag and search result if( is_author() | is_date() | is_search() | is_category() | is_tag() ) { _e('<meta name="robots" content="noindex,follow" />'); } ?>
修改HTTP头部选项
以 nginx 为例,在相应的 location 块添加如下代码,如果是子域名定义的站点,则应为 server 块。
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
apache 我并不熟悉,bing webmaster 有这样一段示例配置供参考。
RewriteCond %{QUERY_STRING} (^|&)(sortOrder|sortField) [NC] RewriteRule .* - [E=MY_SET_HEADER:1] Header set X-Robots-Tag "noindex,nofollow" env=MY_SET_HEADER
配置完成后,可在 google search console 或 bing webmaster tools 进行验证。
文章评论