Я использую сайт stati c в GAE и использую собственный домен (назовем его example.com
) с включенными сертификатами SSL. Я хотел бы канонизировать URL-адреса до https://www.example.com/
. Это означает перехват любых запросов к myproject.appspot.com
, обычному HTTP и / или свободному домену и перенаправление на www
через HTTPS.
Я понимаю, что невозможно поместить логи перенаправления c в app.yaml
, но в идеале я бы хотел сохранить файл stati c, обслуживающий логи c, и иметь только код приложения для перенаправления. (В отличие от выполнения операции stati c в коде приложения.)
Вот что у меня есть:
Содержимое файла 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
по-прежнему обслуживает контент, а не перенаправляет его в пользовательский домен.
Я видел аналогичный вопрос SO и использовал его в качестве основы для моего кода выше. Я внимательно следил за этим, поэтому не уверен, устарели ли они или отсутствуют детали.
Я не очень знаком с webapp2. Также открыты для решений в другой среде или даже на другом языке программирования.