我设计了一个网站,其中整个网站都包含在一个页面中(index.php)。在页面内,<section>
标签定义了网站的不同部分(主页、联系人、博客等)
导航是通过始终可见的按钮实现的,单击时使用 javascript 更改部分的可见性,以便在任何时候只显示一个。
更具体地说,这是通过使用 url 中的哈希并处理hashchange
事件来完成的。这会产生诸如 www.site.com/#home (如果不存在其他哈希则为默认值)和 www.site.com/#contact 之类的 URL。
我想知道这是否是一个好的设计。它有效,但我觉得必须有更好的方法来实现同样的目标?澄清一下,我的目标是加载一次所有主要内容的网站,这样在初始加载后就不会再加载页面,并且在部分之间移动会更顺畅。
除此之外,还引入了另一个关于 SEO 的问题。该网站显示在 google 中,但例如,如果搜索查询包含特定部分中的术语,单击时它仍会加载默认的#home 页面,而不是找到该术语的特定部分。我该如何纠正这个问题?
最后,其中一个部分是博客部分,它是唯一不会一次全部加载的部分,因为默认情况下它会从数据库加载最新帖子。当用户从列表中选择不同的帖子(它本身是使用 AJAX 加载的)时,AJAX 用于获取和显示新帖子,并且 pushState 更改历史记录。同样,为了给每个帖子一个可以在外部引用的唯一 url,菜单会更改由 javascript 处理的 url,从而产生诸如www.site.com/?blogPost=2#blog
和之类的 url www.site.com/?blogPost=1#blog
。
谷歌根本看不到这些帖子。使用 Googlebot 工具显示爬虫将博客部分视为始终为空,因此没有任何博客文章被编入索引。
我能改变什么?
(我不知道这是否应该在网站管理员的stackexchange上,如果它在错误的地方很抱歉)