为具有自定义域的静态网站规范化URL

问题描述 投票:0回答:1

我正在GAE上运行静态站点,并使用启用了SSL证书的自定义域。我想将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 web2py canonicalization
1个回答
0
投票

Mapping Custom Domains to GAE

[App Engine允许应用程序通过自定义域提供服务,例如example.com,而不是默认的appspot.com地址。您可以创建一个domain mapping for your App Engine app,以便它使用自定义域。

您将需要执行以下操作:

  1. 通过Webmaster Central验证您是域的所有者
  2. 确保您的域已通过验证。
  3. 如果需要,将域的所有权委托给其他用户或服务帐户。
  4. 将您的域映射到您的App Engine应用。
  5. 用列出的资源记录填写表单,包括它们的类型和规范名称(CNAME)
  6. 将此信息添加到您的域名注册商的DNS配置中。

  7. Securing Custom Domains with SSL

默认情况下,当您将自定义域映射到您的应用时,App Engine会为HTTPS连接的SSL颁发托管证书。 Securing your custom domains with SSL提供有关此的更多信息。


Handling URL requests that do not use HTTPS

任何URL处理程序都可以使用secure设置,包括脚本处理程序和静态文件处理程序。如果secure设置为always,则与不使用HTTPS的此处理程序匹配的URL的请求

将自动重定向到具有相同路径的HTTPS URL。查询参数保留用于重定向。

app.yaml文件中的示例:

handlers:
- url: /youraccount/.*
  secure: always
  script: auto

结论

因此,按照以下步骤操作后,您应该将自定义域正确映射到使用SSL证书保护自定义域的App Engine网站。

此外,通过在secure:always文件中添加app.yaml处理程序,针对您的App Engine网站的所有URL请求都将自动重定向到具有相同路径的HTTPS URL。

© www.soinside.com 2019 - 2024. All rights reserved.