问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

域名是否支持泛域名?如何做泛域名解析?

发布网友 发布时间:2022-04-23 09:46

我来回答

6个回答

懂视网 时间:2022-05-11 04:36

其实Tornado对子域名和泛域名(除了特别说明外,以下子域名和泛域名均简称为泛域名)的支持并不是什么新鲜事,两年多前我用Tornado写的开源网站 http://poweredsites.org 就有了对泛域名的支持,但是Tornado的官方文档里并没有明确对此功能进行说明,虽然源代码里是有注释的,终是有点隐晦,这不,近日mywaiting同学就遇到了这个问题,我应邀特撰此博文,分享下我对此的一点点经验。

通常,用Tornado添加url映射路由表是直接传handlers给Application这种方式的,比如官方的chatdemo:

class Application(tornado.web.Application):
 def __init__(self):
 handlers = [
 (r"/", MainHandler),
 (r"/auth/login", AuthLoginHandler),
 (r"/auth/logout", AuthLogoutHandler),
 (r"/a/message/new", MessageNewHandler),
 (r"/a/message/updates", MessageUpdatesHandler),
 ]
 settings = dict(
 cookie_secret="43oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
 login_url="/auth/login",
 template_path=os.path.join(os.path.dirname(__file__), "templates"),
 static_path=os.path.join(os.path.dirname(__file__), "static"),
 xsrf_cookies=True,
 autoescape="xhtml_escape",
 )
 tornado.web.Application.__init__(self, handlers, **settings)

这种方式其实添加的是一个域名通配的url映射表,即域名&子域名不限,只要访问能够解析到这个chatdemo上,“/auth/login” “/auth/login”这些url就都能够正常运行。假设www.feilong.me、abc.feilong.me、feilong2.me这个三个(子)域名均配置为可由这个chatdemo程序来host,那么访问这三个(子)域名均可以正常使用这个chatdemo,总之域名是无关的。

实际上,这种方式它的内部是通过Application里的这个add_handlers来实现的(原码注释如下):

 def add_handlers(self, host_pattern, host_handlers):
 """Appends the given handlers to our handler list.
 
 Note that host patterns are processed sequentially in the
 order they were added, and only the first matching pattern is
 used. This means that all handlers for a given host must be
 added in a single add_handlers call.
 """

只不过它是隐式的调用这个add_handlers而已,其关键点就在于第一个参数host_pattern(匹配域名的)上,上面那种方式,默认添加的host_pattern是”.*$”,即域名通配,若要支持泛域名,只需要显式的调用add_handlers来添加相应的host_pattern和handlers即可。

接下来就以poweredsites的源码来介绍Tornado对泛域名的支持,app.py里的Application里面有这么几句:

 super(Application, self).__init__(handlers, **settings)
 
 # add handlers for sub domains
 for sub_handler in sub_handlers:
 # host pattern and handlers
 self.add_handlers(sub_handler[0], sub_handler[1])

常见的方式super(Application, self).__init__(handlers, **settings)添加的是根域名poweredsites的handlers,接着用for循环显式添加的是子域名和泛域名的handlers。这里的sub_handlers依次放有各子域名的handlers,其最后一个是泛域名的handlers:

sub_handlers.append(site.sub_handlers)
sub_handlers.append(blog.sub_handlers)
sub_handlers.append(admin.sub_handlers)
# wildcard subdomain handler for project should be the last one.
sub_handlers.append(project.sub_handlers)

指定的子域名的sub_handlers(site.sub_handlers)是这个样子的,这里的第一个元素就是host_pattern:

sub_handlers = ["^sites.poweredsites.org$",
 [
  (r"/", _WebsiteIndexHandler),
  (r"/feeds", _WebsitesFeedsHandler),
  (r"/([a-z0-9]{32})", _WebsiteHandler),
  (r"/([^/]+)", WebsiteHandler),
  ]
 ]

泛域名(project.sub_handlers)的区别也就在于这第一个元素,即用来做host_pattern的是通配一些子域名的:

sub_handlers = ["^[a-zA-Z_-0-9]*.poweredsites.org$",
 [(r"/", ProjectIndexHandler),
  (r"/top", ProjectTopHandler),
  (r"/opensource", ProjectOpensourceHandler),
  ]
 ]

在用到了泛域名的ProjectIndexHandler里,运行时具体的子域名就可以通过下面这样的方式获得:

class ProjectIndexHandler(ProjectBaseHandler):
 def get(self):
 subdomain = self.request.host.split(".")[0]

需要说明的是,Tornado里面的url映射表和Django一样是有顺序的,即url依次序由上到下匹配,只要匹配到就立即结束,不再往下匹配,而带子域名和泛域名的url路由其匹配优先级是要高于通配域名”.*$”的(这个不用你操心,add_handlers会自动为你做到这一点)。同样的,对于泛域名,因为其子域名是通配的,因此指定子域名的handlers需要放到泛域名前添加,如admin、blog这类子域名的handlers要放在泛域名之前,这就是poweredsites里sub_handlers.append(project.sub_handlers)放到最后一条的原因,project这条是对应泛域名的,http://tornado.poweredsites.org 就是靠这一条来实现的。

备注:需要支持泛域名,首先要你的域名解析支持泛域名。

转载请注明出处:http://feilong.me/2012/08/wildcard-subdomain-support-in-tornado

热心网友 时间:2022-05-11 01:44

顶级域名肯定是支持泛域名解析的,你解析泛域名时,就添加a记录,主机名填写*,解析地址填写你域名解析的ip地址就行了
可直接到我们网站注册域名,购买空间的话可提供备案服务。如有问题,请咨询我们在线客服,即可享受优惠价。我们公司03年建立,均提供给客户7年的优势服务,联系方式请点击我的用户名——用户资料。
智能建站活动优惠价425元,会打字就会建网站,操作简单。具有齐全的网站功能:商品展示&发布管理、酷炫图文工具、文章管理、留言本、流量统计、网站SEO等。

热心网友 时间:2022-05-11 03:02

需要购买支持域名泛解析的空间才能搞定。
域名基本都是具有泛解析的功能的,只要在域名解析里将 *.abc.com 指向你的空间IP就可以了。
但要想实现真正的域名泛解析,最主要的还是取决于空间是否支持此功能。必需要是独立IP并支持域名泛解析的虚拟空间或租用独立IP的整机服务器才能实现。

推荐一个最新出来的具有此功能的空间给你吧。
http://idc.hao513.com
这里的空间是独立IP并支持域名泛解析的,也很便宜实惠,加入代理的话,购买空间更便宜划算。
我就买了一个正在使用着呢,感觉好爽,呵呵,我找这种空间好久了,之前一直都没有,最近才发现的,好像目前国内只有4家有支持域名泛解析的虚拟空间卖。
我还正计划做一个网站提供免费二级域名申请的功能呢,以及类似网店、博客、或个人主页之类的,都可以为用户提供一个好记的二级域名,有了提供二级域名的这个功能,主域名还可以让千千万万的人去帮你宣传与推广,我好喜欢哦,也盼了好久这种便宜而功能强大的空间出现了,从2004年到今天,我才刚发现,呵呵。

热心网友 时间:2022-05-11 04:36

所谓“泛域名解析”是指:利用通配符 * (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。

泛域名解析的用途

1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。
2.防止用户错误输入导致的网站不能访问的问题
3.可以让直接输入网址登陆网站的用户输入简洁的网址即可访问网站

参考资料:上海快网

热心网友 时间:2022-05-11 06:28

是否支持泛域名解析要看空间提供商提供的空间是否支持泛域名解析。
如果支持的话,就在就在域名管理里添加a记录,主机名填写*,解析IP地址填写你的空间IP地址就可以了。

热心网友 时间:2022-05-11 08:36

这个要看域名注册商有没有这个支持的!

有就可以做,不支持的话就没有办法了!一般都是可以的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请帮忙查iphone4手机的序列号dx3hnchpdp0n DX3J481PDP0N帮忙查一下 是真的吗 我不会查 大神们是翻新的? 苹果4激活日期查询 猫猫一直发情怎么办呢 如何帮助猫咪度过发情期呢? 本科英语都要过4级吗 车子中间的踏板是什么 高考400分能考哪些军事类二本 联通3g双卡双待智能导航手机 ...可以一个卡装移动2g的卡,专打电话,一个卡装联通3g流量卡吗 桌面上出现双图这是什么问题在线等 双屏幕壁纸问题 我的VIVO手机出现双重壁纸,请问要如何关闭其中一个壁纸? 手机上下双格壁纸? 有没有什么好的双屏幕壁纸推荐 求动漫壁纸,要求双人图,唯美,好看,超清! 联想手机相册里的照片误删怎么恢复 您好,我不小心把内置卡上的照片删了,还能恢复吗?手机型号是联想s650 电脑浏览器部分打不开页面怎么回事 我手机是联想A590怎么恢复被误删的照片 如果不小心删除了本地照片和云端同步的照片,要如何找回呢? 联想平板电脑把相册软件弄丢了怎样弄回来? 联想手机照片删除了怎么恢复软件 国内平邮件查询 怎样掌握话语的主导权? 联想手机a850照片删除怎样恢复 如何掌握说话的语病? 邮政国内普通包裹查询 大学生服装消费心理调查问卷 电脑用23寸的屏用多大的桌面壁图 ? 有什么证书,能够支持多个域名访问的? WIN7双屏壁纸无法设置不一样 "所有子域名"类型的通配符证书都支持哪些域名 1双屏壁纸如何设置2如何让两个显示器显示不同的桌面 WIN7,双显示屏怎么显示不同壁纸 jquery怎么清空table的tbody中的数据 根据Internet的域名代码规定,域名中这些都代表什么网站? html的table中<TBODY></tbody>标记好像根本没有作用哦,是吗?_百度知 ... 求双显示器超长的壁纸 初学者问题\\table与tbody有什么分别 win10双显示器壁纸设置方法 FTP常用命令有哪些? 在哪更换手机的屏幕壁纸? table里的tbody的作用是什么? 怎样做FTP? 如何删除动态table中的tbody元素 FTP 复制文件命令 请问html中, table中为什么还用tbody,有什么作用呢,是程序自动生成的吗... 怎么从FTP上下载东西? 在表格中加入<tbody>的效果是什么呀??