使用AJAX的单页动态网站的设计和SEO

时间:2014-04-16 12:29:23

标签: javascript html ajax seo sitedesign

我设计了一个网站,整个网站都包含在一个页面中(index.php)。 在页面中,<section>标记定义了网站的不同部分(家庭,联系人,博客等)

通过始终可见的按钮实现导航,单击时使用javascript更改各部分的可见性,以便随时只显示一个。

更具体地说,这是通过使用url中的哈希并处理hashchange事件来完成的。这会产生诸如www.site.com/#home之类的网址(默认情况下,如果没有其他哈希)和www.site.com/#contact。

我想知道这是不是一个好设计。它有效,但我觉得必须有一个更好的方法来实现同样的事情?为了澄清,我的目标是一次加载所有主要内容的网站,以便在初始加载后没有更多的页面加载,并且在各个部分之间移动会更顺畅。

除此之外,还引入了另一个关于SEO的问题。该网站显示在谷歌中,但是,例如,如果搜索查询在特定部分中包含一个术语,它仍会在单击时加载默认的#home页面,而不是该术语的特定部分。我该如何解决这个问题?

最后,其中一个部分是博客部分,它是唯一一次不加载所有部分的部分,因为默认情况下它会从数据库加载最新的帖子。当用户从列表中选择不同的帖子(其本身是使用AJAX加载)时,AJAX用于获取和显示新帖子,pushState更改历史记录。同样,为了给每个帖子提供一个可以在外部引用的唯一网址,菜单会更改由javascript处理的网址,从而生成www.site.com/?blogPost=2#blogwww.site.com/?blogPost=1#blog等网址。

谷歌根本看不到这些帖子。使用Googlebot工具显示抓取工具将博客部分视为始终为空,因此没有任何博客帖子被编入索引。

我可以改变什么?

(我不知道这是不是应该在网站管理员堆栈交换上,如果它在错误的地方就很抱歉)

1 个答案:

答案 0 :(得分:5)

建立一个普通网站。为每个页面提供一个普通的URL。让Google为这些网址编制索引。如果您没有Google可以编制索引的页面,那么它就无法为您的内容编制索引。

使用JS / Ajax逐步增强网站。

当遵循链接时(或者没有JS,将执行加载新页面的其他操作)使用JavaScript将当前页面转换为目标页面。

如果您没有使用JavaScript,请使用pushState将网址更改为已加载的网址。 (这样做而不是使用片段标识符(#)hack)。

请确保listen for history events,以便在单击后退按钮时可以将页面转换回来。

这会导致以下情况:

  1. 用户从Google <{1}}到达
  2. /foo包含/foo页面
  3. 的所有内容
  4. 用户点击指向/foo
  5. 的链接
  6. JavaScript会更改网页内容以匹配用户直接转到/bar所获得的内容,并将网址设置为/bar /bar

  7. 请注意,还有(not recommended)hashbang技术将单页网站刻录成Google可以编制索引的表单,但该表单不健壮,不适用于任何其他非网站JS客户端和正常工作几乎一样多。