3

我想要对任何以“/”结尾的 url 的获取请求,例如http://website.com/some_dir/以接收该目录中的 index.html 文件......在我的示例中,它应该接收http://website.com /some_dir/index.html

我让它在本地与 GAE 启动器/本地服务器一起工作......但是当我部署它并通过 website.appspot.com 访问它时它失败了......我收到错误:

错误:未找到

在此服务器上找不到请求的 URL /some_dir/。

这就是我的 yaml 中的内容:

- url: /
  static_files: staticLocation/index.html
  upload: staticLocation/index.html
- url: (.+)/
  static_files: staticLocation/\1/index.html
  upload: staticLocation
- url: /
  static_dir: staticLocation

我很好奇它如何/为什么在本地工作得很好,但在 apppot 上却没有......想法,以及如何解决我的问题?

4

3 回答 3

0

我已经确认了你的问题。在本地工作,但不在 apppot 上工作。要解决您的问题更改:

- url: (.+)/
  static_files: staticLocation/\1/index.html

- url: (.*)/
  static_files: staticLocation\1/index.html`

它应该可以正常工作。(注意:+已更改为*inurl并且 a/已删除 in static_files

为了满足您的好奇心,您正在匹配前导/,因此文件系统位置查找staticlocation//some_dir/index.html在您的文件系统上运行良好,因为它//会折叠到/您的操作系统中。我认为 apppot 的路径查找不会折叠//导致无法找到您的 index.html 文件。

哦,顺便说一句,像我提到的那样修复第二条规则将使您根本不需要第一条规则,以便可以删除该规则。

于 2014-09-17T09:31:15.770 回答
0

您的第二条路线的“上传”行不够详细,因此其中的文件不会部署到 appengine。你想要这样的东西:

- url: (.+)/
  static_files: staticLocation/\1/index.html
  upload: staticLocation/(.*)

- url: /(.+)
  static_files: staticLocation/\1/index.html
  upload: staticLocation/(.+)/index.html

(您的最后一条路线与第一条路线具有相同的 url,因此它永远不会被击中并且可以被删除。)

于 2012-09-02T13:51:14.533 回答
-1

AppEngine 生产服务器是区分大小写的文件系统,请检查两个大小写是否匹配。

于 2012-09-02T04:44:22.617 回答