在AppEngine中的根路径上处理_escaped_fragment_

时间:2014-01-29 13:58:59

标签: angularjs google-app-engine seo hashbang

我正在使用Google App Engine来托管带有Python网络服务的AngularJS应用。根路径/设置为返回index.html,/ api / *请求转到Python控制器进行webservice调用,任何其他路径转到静态资源(图像,视图等)

我正在尝试使用hashbang / _escaped_fragment_技术来获取搜索引擎索引的应用程序设置。据我了解,http://www.whatever.com/#!/news的网址会被搜索引擎转换为http://www.whatever.com/?_escaped_fragment_=/news

编写一些代码来处理该请求不是问题,但是让代码监听根路径是一个问题,因为它被映射到index.html

在发出_escaped_fragment_请求时是否有元标记告诉搜索引擎使用不同的路径(而不是/)?

如果没有,Google App Engine中有没有办法向/请求index.html,但如果有_escaped_fragment_查询参数,那么请转到控制器处理请求?

目前我唯一能找到的工作就是为根路径设置一个控制器,它会检查_escaped_fragment_参数。如果有,它会为搜索引擎呈现内容,如果没有,它会读取index.html并将其写入响应。我希望有更好的选择。

1 个答案:

答案 0 :(得分:1)

您只需将以下内容添加到您的网页,然后处理www.example.com?_escaped_fragment_=

即可
<meta name="fragment" content="!">

来自Google Developers for AJAX Applications Crawlable Getting Started教程:

换句话说,如果您将<meta name="fragment" content="!">放入 页面 www.example.com ,抓取工具会暂时将此网址映射到 www.example.com?_escaped_fragment _ = 并会向您提出此请求 服务器。然后,您的服务器应返回相应的HTML快照 www.example.com


同样来自Full Specification页面,更具体地来自没有哈希片段的页面的部分:

以下重要限制适用:

  1. 元标记可能只出现在没有散列片段的页面中。
  2. 只有“!”可能会出现在内容字段中。
  3. 元标记必须出现在文档的头部。