Google App Engine中包含尾部斜杠的网址

PJ.*_*des 0 google-app-engine url-rewriting

这是我的app.yaml:

- url: /about|/about/.*
  script: about.py
Run Code Online (Sandbox Code Playgroud)

这是我的'about.py':

application = webapp.WSGIApplication([(r'^/about$', AboutPage),
                                      (r'^/about/$', Redirect),
                                      (r'.*', ErrorPage)],
                                        debug = True)
Run Code Online (Sandbox Code Playgroud)

我想将所有请求重定向/about//about.我希望将所有其他请求发送到错误页面.

它在localhost上的开发服务器上工作,但我/about/在GAE上部署应用程序后无法访问- 它只显示一个空页面.

我在app.yaml中调整了URL模式的顺序.它现在适用于GAE.

Tri*_*ych 6

如果您不希望应用程序中任何位置的GET请求使用斜杠,则可以在app.yaml顶部实现全局重定向.请注意,POST请求不会重定向,但这是好的(无论如何),因为用户通常不会手写POST URL.

app.yaml:

application: whatever
version: 1
api_version: 1
runtime: python

handlers:
- url: .+/ 
  script: slashmurderer.py
Run Code Online (Sandbox Code Playgroud)

slashmurderer.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class SlashMurdererApp(webapp.RequestHandler):
   def get(self, url):
      self.redirect(url)

application = webapp.WSGIApplication(
   [('(.*)/$', SlashMurdererApp)]
)

def main():
   run_wsgi_app(application)
Run Code Online (Sandbox Code Playgroud)