4

我一直在构建一个基于 jquery 导航的网站,无需重新加载(使用 PHP 和 AJAX),最近遇到了页面“后退”、“前进”和“重新加载”功能以及 SEO 友好性的问题。

--跳过本节直接提问--

我的网站目前(不使用 AJAX,但是)加载一个 index.php,它有几个“内容”div,其中一个是可见的(class="active"),而其他的不显示。当用户点击导航链接时,一个漂亮的动画在内容 div 之间切换。

我有 apache 重写以映射诸如

http://mysite.com/abouthttp://mysite.com/index.php?page=about

其中“关于”部分将是默认显示的部分(而其他“内容”div 被隐藏)。基于此参数,我为页面包含正确的元标记。我的站点地图有 mysite.com/about、mysite.com/blog 以便它们被索引为很好的单独页面。

但是,我最近决定制作这个基于 ajax 的内容,因为我计划合并更多内容,并且将所有内容加载到一个页面上是愚蠢的。

注意:我现在也在实现 Smarty 模板。

我决定实现哈希标签,但看到了固有的 SEO 问题,然后我发现了 hashbangs(wth?!),然后找到了带有history.pushState()History.js的新 HTML5 内容,并决定使用它。

所以这是主要问题

如果我只有一个页面使用 ajax 在内容 div 中加载页面模板,使用 history.pushState() 修改 URL 并使用 mod_rewrite 和 PHP 后端可以在直接请求的情况下提供默认内容模板,例如“mysite.com/about”(mysite.com/index.php?page=about)(用于基本可用性和 SEO),除非我有两个模板 - 一个内容模板 - 和一个元,否则我也无法为直接请求设置元内容模板?还有其他方法吗?

标签是否足够重要<title><meta name="description">足以保证有一个专门为他们设计的模板?

总之,我希望我漂亮的 mod_rewrite URLS 能够在谷歌上为特定的 ajax 加载页面内容模板提供正确的标题和元描述。

编辑

我的目标与他们在hypem.com上所做的几乎相同。他们有一个事件监听器,可以在<title>列出新内容时更改标签。他们还提供正确的<meta name="description">标签,但前提是它是对主要页面之一的直接请求,如博客 - 其他页面,如http://hypem.com/blog/indie+today/10332,返回元标签主博客页面,并且仅在直接请求时

4

1 回答 1

-1

我将首先构建站点以使用所有直接链接且不使用 ajax,然后添加 ajax。但是,如果浏览器正在请求页面,则仅包含添加 ajax/history 功能的代码。如果网络爬虫访问您的网站,请不要包含 ajax/history 功能。

于 2011-09-30T18:41:49.650 回答