那么怎样尽量使这些URL不被爬行和索引、收录呢?前几天的一篇帖子如何隐藏内容也可能成为SEO问题讨论的是类似问题,这种过滤页面就是想隐藏的内容种类之一。不过可惜,我目前想不出完美的解决方法。云晨守望提出两个方法,我觉得都无法完美解决。
一是将不想收录的URL保持为动态URL,甚至故意越动态越好,以阻止被爬行和收录。但是,搜索引擎现在都能爬行、收录动态URL,而且技术上越来越不是问题。虽然参数多到一定程度确实不利于收录,但4、5个参数通常还可以收录。我们无法确认需要多少参数才能阻止收录,所以不能当作一个可靠的方法。而且这些URL接收内链,又没有什么排名能力,还是会浪费一定权重。
第二个方法,robots禁止收录。同样,URL接收了内链也就接收了权重,robots文件禁止爬行这些URL,所以接收的权重不能传递出去(搜索引擎不爬行就不知道有什么导出链接),页面成为权重只进不出的黑洞。
连向这些URL的链接配合nofollow也不完美,和robots禁止类似,nofollow在Google的效果是这些URL没有接收权重,权重却也没有被分配到其它链接上,所以权重同样浪费了。百度据称支持nofollow,但权重怎么处理未知。
将这些URL链接放在Flash、JS里也没有用,搜索引擎已经可以爬行Flash、JS里的链接,而且估计以后越来越擅长爬。很多SEO忽略了的一点是,JS中的链接不仅能被爬,也能传递权重,和正常连接一样。
也可以将过滤条件链接做成AJAX形式,用户点击后不会访问一个新的URL,还是在原来URL上,URL后面加了#,不会被当成不同URL。和JS问题一样,搜索引擎正在积极尝试爬行、抓取AJAX里的内容,这个方法也不保险。
还一个方法是在页面head部分加noindex+follow标签,意即本页面不要索引,但跟踪页面上的链接。这样可以解决复制内容问题,也解决了权重黑洞问题(权重是可以随着导出链接传到其它页面的),不能解决的是浪费蜘蛛爬行时间问题,这些页面还是要被蜘蛛爬行抓取的(然后才能看到页面html里的noindex+follow标签),对某些网站来说,过滤页面数量巨大,爬行了这些页面,蜘蛛就没足够时间爬有用页面了。
再一个可以考虑的方法是隐藏页面(cloaking),也就是用程序检测访问者,是搜索引擎蜘蛛的话返回的页面拿掉这些过滤条件链接,是用户的话才返回正常的有过滤条件的页面。这是一个比较理想的解决方法,唯一的问题是,可能被当作作弊。搜索引擎常跟SEO讲的判断是否作弊的最高原则是:如果没有搜索引擎,你会不会这么做?或者说,某种方法是否只是为了搜索引擎而采用?显然,用cloaking隐藏不想被爬行的URL是为搜索引擎做的,不是为用户做的。虽然这种情况下的cloaking目的是美好的,没有恶意的,但风险是存在的,胆大的可试用。
还一个方法是使用canonical标签,最大问题是百度是否支持未知,而且canonical标签是对搜索引擎的建议,不是指令,也就是说这个标签搜索引擎可能不遵守,等于没用。另外,canonical标签的本意是指定规范化网址,过滤条件页面是否适用有些存疑,毕竟,这些页面上的内容经常是不同的。
目前比较好的方法之一是iframe+robots禁止。将过滤部分代码放进iframe,等于调用其它文件内容,对搜索引擎来说,这部分内容不属于当前页面,也即隐藏了内容。但不属于当前页面不等于不存在,搜索引擎是可以发现iframe中的内容和链接的,还是可能爬行这些URL,所以加robots禁止爬行。iframe中的内容还是会有一些权重流失,但因为iframe里的链接不是从当前页面分流权重,而只是从调用的那个文件分流,所以权重流失是比较少的。除了排版、浏览器兼容性之类的头疼问题,iframe方法的一个潜在问题是被认为作弊的风险。现在搜索引擎一般不认为iframe是作弊,很多广告就是放在iframe中,但隐藏一堆链接和隐藏广告有些微妙的区别。回到搜索引擎判断作弊的总原则上,很难说这不是专门为搜索引擎做的。记得Matt Cutts说过,Google以后可能改变处理iframe的方式,他们还是希望在同一个页面上看到普通用户能看到的所有内容。
总之,对这个现实、严重的问题,我目前没有自己觉得完美的答案。当然,不能完美解决不是就不能活了,不同网站SEO重点不同,具体问题具体分析,采用上述方法中的一种或几种应该可以解决主要问题。
而最最最大的问题还不是上述这些,而是有时候你想让这些过滤页面被爬行和收录,这才是杯具的开始。以后再讨论。