我已经尝试了所有方法,但似乎您无法获取所有网址...
- url: /.*
script: not_found.py
...处理基于静态目录路径的 url。例如。我可以输入 www.foobar.com/asdas/asd/asd/asd/ad/sa/das/d 并获得一个不错的自定义 404 页面。但是,如果我更改像 www.foobar.com/mydir/mydir/mypage.html 这样的静态路径 url,我只会得到可怕的通用 404 ....
Error: Not Found
The requested URL /mydir/mydir/mypage.html was not found on this server.
...我想更改在目录路径中捕获 url 并写入 404 的任何内容。这似乎是在 GAE Python 中获得一致的自定义 404 页面的唯一方法。
任何人都可以帮忙吗?我从头开始编写我的网站,并且对 Python 的了解非常有限。实现一致的自定义 404 是我似乎无法克服的唯一事情。
编辑/添加:好的,我已经添加了@Lipis 的善意建议,并完成了入门,幸运的是,这让我对课程有了更好的理解(遗憾的是,我还不能投票)。但!我正在使用在网上找到的 .py 脚本,我认为 NotFound 类干扰了提供我的索引页面的类,因为现在我的索引页面是 Jinja 指定的 404 页面!我对 MainHandler 了解很少,所以我现在可能不得不放弃。
import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
import jinja2
class MainHandler(webapp.RequestHandler):
def get (self, q):
if q is None:
q = 'index.html'
path = os.path.join (os.path.dirname (__file__), q)
self.response.headers ['Content-Type'] = 'text/html'
self.response.out.write (template.render (path, {}))
class NotFound(webapp.RequestHandler):
def post(self):
# you need to create the not_found.html file
# check Using Templates from Getting Started for more
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
template = jinja_environment.get_template('404.html')
self.response.out.write(template.render(template_values))
def main ():
application = webapp.WSGIApplication ([('/(.*html)?', MainHandler),('/.*', NotFound)],
debug=True)
util.run_wsgi_app (application)
if __name__ == '__main__':
main ()