语义化对单页面应用SEO有效果吗

402 阅读3分钟

我们知道:SEO的基本就是要语义化,方便搜索引擎抓取,但这讲的是传统多页面应用 在没有被改造过的单页面应用中 语义化对SEO有作用吗

首先看一下搜索引擎原理

这种带#的URL搜索引擎会被收录吗?

1、什么是哈希值?

在阮一峰的博客中有一篇文章可以很好的解释哈希值,#值不是http请求,而是一个浏览器动作。通过#,可以快速定位到网页中的某个具体位置。例如,就会快速定位到id="comment-121"或这个位置。

2、搜索引擎会不会抓取带#号(哈希值)的URL

答案是一般不会。搜索引擎抓取页面首先要遵循http协议,可是#不是协议内的内容。而实际上也是这样,我们没有见过搜索引擎的搜索结果中,哪一条记录可以快速定位到网页内的某个位置的。因此,希望通过在网站内外添加带#的锚链接来让搜索引擎第一次访问时快速定位是不现实的。当然,搜索引擎蜘蛛为了模拟真实用户,在进入网站之后,会通过一些技术实现模拟鼠标点击的效果,这个时候,页面的锚链接还是起作用,但任何链接在搜索结果中时,都不会带#。

3、URL 中的 #! 有什么作用?

这是一个违反2中的特例,谷歌会抓取带有#!的URL。Google规定,如果你希望Ajax生成的内容被浏览引擎读取,那么URL中可以使用"#!"(这种URL在一般页面一般不会产生定位效果),Google会自动将其后面的内容转成查询字符串_escaped_fragment_的值。例如/#!/username等效于/?escaped_fragment=/username,而带?的URL是会被抓取的,所以#!的URL会被谷歌收录。

4、搜索引擎会不会抓取带#号(哈希值)的URL给我们的启示

一、不要试图用robots.txt屏蔽#的网址。我之前翻过一个错误,即在嗖录网的robots.txt中加入了disallow:/*#规则,以试图屏蔽这些带#的URL被抓取。但实际上,这个做法是错误的,首先#在robots.txt是注释符号,它后面的内容会被注释掉,所以这条规则变成了disallow:/ ,即阻止收录本站所有页面,幸好我在今早发现,并马上进行了修改。其次,搜索引擎不会抓取带#的URL,因此没有必要加一条这样的规则。

二、可以利用#和ajax结合来隐藏不想被抓取的内容。在我们的一些网页中,可能有些内容是我们不想直接告诉搜索引擎的,或者一些隐私不希望被抓取,因此我们可以采用#来控制这些信息的显示。例如我们增加一个按钮,当URL中带#show-info-123时,显示123的个人信息,而不带时不显示。而对于搜索引擎来说,会自动忽略带#的URL,因此123的个人信息不会被抓取。

也就是说 hash模式的语义化对SEO几乎没有效果,当然我们语义化也不单是为了SEO