【发布时间】:2020-05-01 18:36:10
【问题描述】:
我在 GAE 上运行一个静态站点,并使用启用了 SSL 证书的自定义域(我们称之为example.com)。我想将 URL 规范化为 https://www.example.com/。这意味着捕获对myproject.appspot.com、纯HTTP 和/或裸域的任何请求,并通过HTTPS 重定向到www。
我知道不可能将重定向逻辑放在app.yaml 中,但理想情况下,我希望将静态文件服务逻辑保留在那里,并且只有用于重定向的应用程序代码。 (与在应用代码中执行静态服务相反。)
这是我目前所拥有的:
文件app.yaml的内容:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: www/index.html
upload: www/index.html
- url: /(.*)
static_files: www/\1
upload: www/(.*)
文件内容dispatch.yaml:
dispatch:
- url: "myproject.appspot.com/*"
module: canonicalizer
文件canonicalizer.yaml的内容:
module: canonicalizer
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: canonicalizer.app
文件canonicalizer.py的内容:
import webapp2
def get_redirect_uri(handler, *args, **kwargs):
return 'https://www.example.com/' + kwargs.get('path')
app = webapp2.WSGIApplication([
webapp2.Route('/<path:.*>',
webapp2.RedirectHandler,
defaults={'_uri': get_redirect_uri, '_code': 302}),
], debug=True)
如您所见,到目前为止,我只尝试实现重定向myproject.appspot.com。我无法让它工作; myproject.appspot.com 仍然提供内容,而不是重定向到自定义域。
我看到a similar SO question 并将其用作我上面代码的基础。我非常密切地关注它,所以我不确定它是否过时或缺少细节。
我对 webapp2 不是很熟悉。也对不同框架甚至不同编程语言的解决方案持开放态度。
【问题讨论】:
标签: google-app-engine redirect google-cloud-platform web2py canonicalization