Pyramid - это приложение WSGI.Это означает, что он зависит от ключа среды HTTP_HOST (установленного заголовком Host) для определения хоста приложения.Это все относительно.Суть в том, что Pyramid не имеет ограничений на то, что она может принять, поэтому мир - это ваша устрица, и вы можете настроить его так, чтобы ограничивать содержимое различными доменами, как вам угодно.Это, конечно, начинается с того, какие хосты ваш веб-сервер настроен для подачи в ваше приложение.
Предполагая, что вы используете диспетчеризацию URL, вы можете захотеть разработать некоторые пользовательские предикаты маршрута, которые проверяют значение request.host
для любых вашиххотел бы.Возвращение False
из этого предиката не позволит этому маршруту когда-либо сопоставить запрос к этому хосту.
Это большая тема, поэтому может помочь, если вы укажете некоторые дополнительные детали.Например, поскольку Pyramid является относительным, любой URL-адрес, который вы можете сгенерировать из «example.com», чтобы перенаправить кого-то на «sub.example.com», необходимо выполнить через прегенератор.
def pregen(request, elements, kw):
kw['_app_url'] = 'http://sub.example.com'
return elements, kw
def req_sub(info, request):
return request.host.startswith('sub')
config.add_route('sub_only', '/',
custom_predicates=(req_sub,),
pregenerator=pregen)
config.add_route('foo', '/foo')
config.add_view(view, route_name-'foo')
def view(request):
# redirect the user to "http://sub.example.com", regardless of whether
# request.host is "example.com" or "sub.example.com"
return HTTPFound(request.route_url('sub_only'))