我想设置一个catchall子域路由系统,其中子域是用户的配置文件,域可以是任何东西,所以它不必根据它运行的服务器进行设置。
我现在所拥有的不是路由我只是试图使用正则表达式捕获子域之后的所有内容。
routes.DomainRoute('<subdomain>.preset-sub.<.*>', [
webapp2.Route('/<page_url:\w+>', handler = SubHandler),
]),
所以我希望能够转到像username.preset-sub.localhost.com/这样的页面并将其路由到该处理程序。
答案 0 :(得分:4)
我提供了一个我正在开发的项目示例,我必须使用它来过滤发送URL的子域:
app = webapp2.WSGIApplication([
routes.DomainRoute('api.domain.com', [
webapp2.Route('/', handler=HomeApi, name='subdomain-home'),
webapp2.Route('/user', handler=UserApi, name='subdomain-home'),
]),
routes.DomainRoute('web.domain.com', [
webapp2.Route('/', handler=HomeApi, name='subdomain-web-home'),
webapp2.Route('/login', handler=Login, name='login-home'),
webapp2.Route(r'/products/<product_id:\d+>', ProductHandler),
]),
webapp2.Route('/', handler=Home, name='home'),
webapp2.Route('/contact', handler=Contact, name='home'),
])
如果您在网上试用,则必须在您的域的cpanel和应用程序的管理面板中添加cname。更多信息:webapp2 - URI routing - Domain and subdomain routing。