【问题标题】:Angular and SEO - creating static HTML versionAngular 和 SEO - 创建静态 HTML 版本
【发布时间】:2014-03-28 16:19:07
【问题描述】:

我即将启动一个 Angular 应用程序,我正在研究如何使它对 SEO 友好。我一直在阅读this article,它谈到了保存动态生成的 HTML 的静态版本(通过 AJAX 等)并让机器人扫描它。

这篇文章讨论了 Google/Bing 如何找到类似的 hashbang URL

http://somesite.com/#!/some_token

...重定向并抓取

http://somesite.com/?_escaped_fragment_=/some_token

出现两个问题:

1) _escaped_fragment_= 到底是什么 - 它应该是字面意思还是我应该用...替换它?这篇文章没有解释它的性质。

2) 我应该如何以及多久拍摄一次 HTML 的静态快照?

在我之前的项目 docula.net 中,我通过传递一个查询字符串令牌手动对 JS 生成的内容进行快照,该令牌通过 AJAX 调用 DOM 转储到 PHP 保存脚本。这是您如何对 Angular 应用程序进行 SEO 化的要点,还是该过程应该以某种方式更加自动化?

【问题讨论】:

    标签: javascript ajax angularjs seo web-crawler


    【解决方案1】:

    _escaped_fragment_= 到底是什么 - 它应该是字面意思还是我应该用...替换它?

    应该是这样的。

    就我个人而言,我会avoid using hash bangs,因为他们是一个可怕的黑客。现在我们有pushState and friends,这意味着我们可以使用真实的 URL。

    我应该如何以及多久对我的 HTML 进行静态快照?

    我会避免使用静态快照来支持按需动态生成内容。

    【讨论】:

    • 谢谢,但这是我没有得到的按需位。你的意思是当有人访问 JS 版本时应该生成它们,即那时我应该重新生成快照文件?如果不是那么,什么时候?回复:URL,文章声称 Google/Bing 期望 hashbang 作为 AJAX 内容的标记。我会研究一下推送状态的东西。
    • pushState 意味着您有一个 常规 URI 没有您需要映射到服务器端位的仅客户端片段标识符。当您在不离开页面的情况下无法更新 URI 时,hashbang 是一种技巧(现在我们有 pushState,情况并非如此)。
    • 一般来说,您使用服务器端逻辑来生成站点,其状态与您转到主页并运行您将运行的 JS 使其进入状态时的状态相同您可以将 URI 设置为被请求的那个(或映射到转义片段黑客的那个)
    • 啊,我明白了 - 所以从听起来你需要做两次网站 - JS 版本和服务器端版本。通过保存 JS 生成的 DOM 的转储,以我描述的方式重新生成快照版本不是更容易吗?感谢您的帮助,顺便说一句。接受答案。
    • 更简单的方法取决于您网站的架构方式。尝试改造这些东西通常比从一开始就建立渐进增强更难。
    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 2014-02-02
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多