我看到AngularJS应用程序关于搜索引擎和SEO的两个问题:
1)自定义标签会发生什么?搜索引擎会忽略这些标签中的全部内容吗?例如,假设我有
<custom>
<h1>Hey, this title is important</h1>
</custom>
<h1>是否在自定义标记中被索引?
2)有没有办法避免搜索引擎索引{{}}绑定字面上?即。
<h2>{{title}}</h2>
我知道我可以做点什么
<h2 ng-bind="title"></h2>
但是如果我真的想让爬虫“看到”标题呢?服务器端渲染是唯一的解决方案吗?
Angular自己的网站为搜索引擎提供简化的内容:http://docs.angularjs.org/?_escaped_fragment_=/tutorial/step_09
假设你的Angular应用正在使用一个Node.js/ express驱动的JSON api,比如/api/path/to/resource。也许您可以使用?_escaped_fragment_将任何请求重定向到/api/path/to/resource.html,并使用内容协商来呈现内容的HTML模板,而不是返回JSON数据。
唯一的问题是,你的Angular路由需要与你的REST API 1:1匹配。
编辑:我意识到这有可能真正搅乱你的REST api,我不建议在非常简单的用例之外使用它,在那里它可能是一个自然的适合。
相反,您可以为机器人友好的内容使用完全不同的路由和控制器集。但是你在Node/Express中复制了所有AngularJS的路由和控制器。
我决定用无头浏览器生成快照,尽管我觉得这有点不太理想。