webapp2 DomainRoute不匹配

时间:2013-05-13 08:59:26

标签: python subdomain webapp2

我正在尝试启动一个网络服务器,为几个子域下的多个站点提供服务。 我正在使用带有webapp2的Pythen并粘贴。我的服务器位于路由器后面,该路由器将静态IP地址与服务器对接并转发端口80.路由器本身没有由我的ISP分配的静态IP地址,因此我使用的是DDNS(例如example.dlinkddns.com)。 在我的文件夹层次结构中,每个文件夹代表一个子域,并且是一个python模块。

像这样:

server/app.py
server/www
  server/www/__init__.py
server/test
  server/test/__init__.py

可以通过www.mydomain.com和test.mydomain.com访问它们 我将* .mydomain.com设置为example.dlinkddns.com的CNAME

这是server / app.py:

import sys
import os

import webapp2
from webapp2_extras import routes

from paste import httpserver

DOMAIN = 'mydomain.com'

class Fallback(webapp2.RequestHandler):
    def get(self, *args, **kw):
        self.response.write('Fallback...\n'+str(args)+'\n'+str(kw))

def main():
    dirs = [name for name in os.listdir(".") if os.path.isdir(name)]
    dirs.remove('env') # folder created by package virtualenv - needed for paste

    rs = []
    for subdomain in dirs:
        # import subdomain package
        exec('import '+subdomain)
        # add routes defined for subdomain
        exec('rs += [routes.DomainRoute("'+subdomain+'.'+DOMAIN+'", '+subdomain+'.routes)]')
    rs += [routes.DomainRoute("<domain:.*>",[webapp2.Route('/<:.*>',Fallback,name='fallback')])]

    app = webapp2.WSGIApplication(rs)   

    httpserver.serve(app, host='0.0.0.0', port='80')  


if __name__ == '__main__':
    main()

这就是我的www包的样子:

__init__.py
import webapp2

class MainMain(webapp2.RequestHandler):
    def get(self,target):
        self.response.write('Hello, webapp2! www.mydomain.com at:'+target)

routes = [
    webapp2.Route('/<target>', handler=MainMain, name='main-main')
]

现在的问题是,当我访问www.mydomain.com时,回退处理程序似乎匹配,但MainMain处理程序应该。 输出是

Fallback... () {'domain':'0.0.0.0'}.

看起来我的应用根本无法识别域名。当我访问example.dlinkddns.com时,会发生同样的事情。 我也尝试了没有后备处理程序,但它只显示了每个路由和每个域的404页面...

我还试图用

启动服务器
httpserver.serve(app, host='192.168.178.33', port='80')

这是我的LAN中我的服务器的静态分配IP地址。输出变为

Fallback... () {'domain':'192.168.178.33'}.

我做错了什么?谢谢你的帮助!

0 个答案:

没有答案