301 リダイレクトを実行しようとしている Google アプリ エンジンで実行されている Python ミドルウェア クラスがあります。
from webob import Request
from webob.exc import HTTPMovedPermanently
from urlparse import urlparse
class MyMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
request = Request(environ)
response = request.get_response(self.app)
if response.status_int == 404:
raise HTTPMovedPermanently(location="/")
return response(environ, start_response)
これは単純化されたバージョンですが、問題を示しています。ミドルウェアから 302/301 リダイレクトを実行する方法に関する情報が見つかりません! すべての情報は、ハンドラーまたはその他のフレームワークからの実行に関連しており、これらのメソッドはすべて Google App Engine でエラーを生成します。
これは私のmain.pyです:
import os
import webapp2
import jinja2
from seo import *
from notfound import *
JINJA_ENVIRONMENT = jinja2.Environment(
loader = jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions = ['jinja2.ext.autoescape'])
class MainHandler(webapp2.RequestHandler):
def get(self):
template = JINJA_ENVIRONMENT.get_template('home.html')
self.response.write(template.render())
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug = True)
app = MyMiddleware(app)