我有一个index.html作为主页的网站工作正常,但我想创建一个包含子文件夹的网站结构,所以我创建了一个名为“team”的文件夹,在团队内部我将一个index.html文件与团队信息。当我加载www.mysite.com/team/index.html它工作正常,但如果我加载www.mysite.com/team我得到404错误。 我如何解决此问题,以自动加载子文件夹中的index.html ??
我使用google app引擎作为服务器,我使用谷歌应用引擎启动器上传文件并使用一些phyton文件。
答案 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
中使用应用程序引用而不是文件名。不推荐提供脚本文件名。