|  |      1robhsiao      2012-12-06 14:53:31 +08:00 用正则取从HTTP_HOST 取出. | 
|  |      2kenneth OP | 
|  |      3kenneth OP 1000000这样的应该是数据库的一个字段,所以nginx解析的时候,如何处理呢? 不同于二级域名指向一级目录那种方式。 | 
|      4timonwong      2012-12-06 15:29:43 +08:00 @kenneth  1. 从request.host 解析出 二级域名 http://www.tornadoweb.org/documentation/httpserver.html#tornado.httpserver.HTTPRequest.host 2. self.redirect(url, permanent=True) http://www.tornadoweb.org/documentation/web.html#tornado.web.RequestHandler.redirect | 
|  |      5kenneth OP @timonwong  Tornado这里的正则该怎么写呢? application = tornado.web.Application([ (r"/", MainHandler), ],**settings) | 
|  |      7LazyZhu      2012-12-06 16:03:08 +08:00 | 
|  |      8kenneth OP | 
|  |      9kenneth OP | 
|  |      10kenneth OP @livid @timonwong @LazyZhu 我想要http://10000000.42qu.com/这样的链接,不希望用http://42qu.com/user/10000000 所以应该不是用跳转吧。 | 
|  |      11LazyZhu      2012-12-06 16:14:47 +08:00  1 | 
|      12timonwong      2012-12-06 16:29:28 +08:00 | 
|  |      13kenneth OP @livid @LazyZhu @timonwong 还是不太明白 http://10000000.42qu.com/ 我的理解,应该是二级域名的 /根目录的请求 http://42qu.com/user/10000000 应该是 /user/([0-9]+)/来处理请求 而Tornado中没有区分二级域名的请求 application = tornado.web.Application([ (r"/", MainHandler), ],**settings @felinx这篇博客说这个问题,只是我还没理解。 http://feilong.me/2012/08/wildcard-subdomain-support-in-tornado | 
|      14timonwong      2012-12-06 16:50:51 +08:00 @kenneth  tornado处理的话 不需要管那里的正则,该怎么写怎么写 你只需要判断 request.host 是不是需要跳转的二级域名。 是的话就302 不是不管,交给get()/post()继续处理 最多只是个程序的结构问题,为了避免重复编码,可以做个BaseHandler基类或者MixIn, 在prepare()中,处理就可以了。 | 
|  |      16kenneth OP 等我想想怎么说清楚,我自己再试试先。 | 
|  |      17LazyZhu      2012-12-06 17:28:13 +08:00 写了个简单的示例,看看是不是你要的 server { server_name ~^(.+)\.byvee\.com$; set $subdomain $1; location / { rewrite_by_lua ' ngx.ctx.user = ngx.var.subdomain if ngx.ctx.user == "1" then ngx.ctx.user = lazyzhu local url = ngx.ctx.user .. ".byvee.com" return ngx.redirect("http://url/", 301) end '; content_by_lua ' local user = "user:" .. ngx.ctx.user ngx.say(user) '; } test: 1.byvee.com 2.byvee.com ..... | 
|  |      19kenneth OP @LazyZhu 谢谢你,我不会这种,我用self.request取subdomain,然后判断再跳转的方式实现了。 暂时先这样,只是不知道这种方法好不好。 | 
|  |      202code      2012-12-06 18:42:00 +08:00 LS,我想你们想复杂了,我曾经在一个php的实际项目中使用的这样的泛域名的方式。 我当时的方法是: ngnix里: server_name site.com *.site.com; php里(我当时使用了一个类似于express的微框架) 写一个middleware,对所有访问过来的请求进行过滤,使用正则判断到泛域名的子域名部分,放在SESSION中,所有不同的子域名访问请求执行的其实是同一套代码,只是SESSION中有一个变量让所有的代码能区分对待不同的用户。 | 
|  |      21LazyZhu      2012-12-06 19:02:51 +08:00 | 
|  |      23felinx      2012-12-07 10:35:33 +08:00 呃,我的那条博客已经讲得很清楚了,你在仔细看看,还有poweredsites的源码吧! |