php - history.pushState 导航 - 元标签怎么样 - 单独的模板?

标签 php ajax seo meta-tags pushstate

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

--跳过这部分直接进入问题--

my site目前(不使用 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() 的新 HTML5 内容History.js 并决定使用它。

那么主要问题来了

如果我只有一个页面使用 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 能够在 google 上显示特定加载 ajax 的页面内容模板的正确标题和元描述。

编辑

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

最佳答案

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

关于php - history.pushState 导航 - 元标签怎么样 - 单独的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7261373/

相关文章:

php - 使用 `must implement interface Doctrine\ORM\EntityManagerInterface error` 将 EntityManagerInterface 注入(inject)我的服务

php - 如何创建数学公式解释器

php - 阻止用户通过访问端点 URL 输入 AJAX 数据

indexing - Google 网站管理员工具网站未编入索引

web - 哪个最好?域重定向或别名?

php - Magento 1.4 $_POST ['field_name'] 不工作

javascript - json循环后推送2个数组

ajax - Javascript AJAX 文件下载

javascript - 从 AJAX 返回的 Javascript 数组

seo - 元关键字和谷歌