在谷歌应用引擎上加载子文件夹时出现错误404

时间:2013-12-05 14:03:05

标签: html google-app-engine

我有一个index.html作为主页的网站工作正常,但我想创建一个包含子文件夹的网站结构,所以我创建了一个名为“team”的文件夹,在团队内部我将一个index.html文件与团队信息。当我加载www.mysite.com/team/index.html它工作正常,但如果我加载www.mysite.com/team我得到404错误。 我如何解决此问题,以自动加载子文件夹中的index.html ??

我使用google app引擎作为服务器,我使用谷歌应用引擎启动器上传文件并使用一些phyton文件。

1 个答案:

答案 0 :(得分:3)

在你app.yaml中,定义你的静态文件处理程序:

…
handlers:
- url: /static
  static_dir: static
- url: /(.*?)/?
  static_files: \1/index.html
  upload: (.*?)/index.html
…

请注意,因为您定义了这样的网站结构,所以除了index.html文件之外,您将无法访问任何其他文件。例如,如果您转到/images/logo.png,App Engine会尝试从静态文件images/logo.png/index.html提供该服务。

要解决该问题,您需要将所有静态文件放在不同的子目录中(上例中为/static),并将其作为static_dir提供。然后,您应该将index.html文件中的文件引用为/static/images/logo.png等。

更新:我会在此处粘贴您的app.yaml,因为您无法在评论中正确格式化:

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css|php|xml))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|php|xml))

- url: /robots.txt
  static_files: robots.txt
  upload: robots.txt 

- url: /favicon.ico
  static_files: favicon.ico
  upload: favicon.ico

- url: .*
  script: main.py

- url: /static
  static_dir: static

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

你的问题是- url: .*指令捕获了所有内容,因此从未触及底部的两个处理程序。

此外,您应该考虑在script中使用应用程序引用而不是文件名。不推荐提供脚本文件名。