使用 App Engine 提供静态文件 [英] Serve static file using App Engine
问题描述
我创建了一个 App Engine 应用程序.到现在为止,我只有几个 HTML 文件可以提供.每当有人访问 http://example.appengine.com/<时,我该怎么做才能让 App Engine 为 index.html 文件提供服务/a> ?
I created an App Engine application. Till now, I only have a few HTML files to serve. What can I do to make App Engine serve the index.html file whenever someone visits http://example.appengine.com/ ?
目前,我的 app.yaml 文件如下所示:
Currently, my app.yaml file looks like this:
application: appname
version: 1
runtime: python
api_version: 1
handlers:
- url: /
static_dir: static_files
推荐答案
这应该可以满足您的需求:
This should do what you need:
https://gist.github.com/873098
说明:在 App Engine Python 中,可以使用正则表达式作为 app.yaml
中的 URL 处理程序,并将所有 URL 重定向到静态文件的层次结构.
Explanation: In App Engine Python it's possible to use regular expressions as URL handlers in app.yaml
and redirect all URLs to a hierarchy of static files.
示例app.yaml
:
application: your-app-name-here
version: 1
runtime: python
api_version: 1
handlers:
- url: /(.*.css)
mime_type: text/css
static_files: static/1
upload: static/(.*.css)
- url: /(.*.html)
mime_type: text/html
static_files: static/1
upload: static/(.*.html)
- url: /(.*.js)
mime_type: text/javascript
static_files: static/1
upload: static/(.*.js)
- url: /(.*.txt)
mime_type: text/plain
static_files: static/1
upload: static/(.*.txt)
- url: /(.*.xml)
mime_type: application/xml
static_files: static/1
upload: static/(.*.xml)
# image files
- url: /(.*.(bmp|gif|ico|jpeg|jpg|png))
static_files: static/1
upload: static/(.*.(bmp|gif|ico|jpeg|jpg|png))
# index files
- url: /(.+)/
static_files: static/1/index.html
upload: static/(.+)/index.html
# redirect to 'url + /index.html' url.
- url: /(.+)
static_files: static/redirector.html
upload: static/redirector.html
# site root
- url: /
static_files: static/index.html
upload: static/index.html
为了处理对不以可识别类型(.html
、.png
等)或 /结尾的 URL 的请求code> 您需要将这些请求重定向到
URL +/
以便为该目录提供 index.html
服务.我不知道如何在 app.yaml
中执行此操作,因此我添加了一个 javascript 重定向器.这也可以通过一个小的 python 处理程序来完成.
In order to handle requests to URLs that don't end with a recognized type (.html
, .png
, etc.) or /
you need to redirect those requests to URL + /
so the index.html
for that directory is served. I don't know of a way to do this inside the app.yaml
, so I added a javascript redirector. This could also be done with a tiny python handler.
redirector.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<script language="JavaScript">
self.location=self.location + "/";
</script>
</head>
<body>
</body>
</html>
这篇关于使用 App Engine 提供静态文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!