3

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

我正在尝试使用 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 并将其写入响应。我希望有更好的选择。

4

1 回答 1

1

您可以简单地将以下内容添加到您的页面,然后处理www.example.com?_escaped_fragment_=

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

来自 Google Developers 制作 AJAX 应用程序可抓取的入门教程:

换句话说,如果您将<meta name="fragment" content="!">页面放入www.example.com,爬虫程序会暂时将此 URL 映射到 www.example.com?_escaped_fragment_=并将向您的服务器请求。然后,您的服务器应返回对应于www.example.com的 HTML 快照。


也来自完整规范页面,更具体地说来自没有哈希片段的页面部分

以下重要限制适用:

  1. 元标记只能出现在没有散列片段的页面中。
  2. 仅有的 ”!” 可能会出现在内容字段中。
  3. 元标记必须出现在文档的头部。
于 2014-01-29T15:01:58.197 回答