【问题标题】:easy way to get the top level domain?获得顶级域名的简单方法?
【发布时间】:2010-06-03 19:33:26
【问题描述】:

我想从用户当前所在的站点名称中获取域扩展名(至少我希望这样称呼它)。

所以来自 www.bbc.co.uk 它是 co.uk 和 www.google.com = .com https://stackoverflow.com/questions/ask = .com

等等

尤其是那些有双重名字的(比如 co.uk)让我头疼....

编辑 据我从 cmets 了解到,co.uk 不是顶级域名吗?这让生活更轻松! 编辑 标题中的新名称(顶级域)

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    它被称为顶级域 (tld),但对于 BBC 来说,它只是“uk”,而不是“co.uk”。

    你想要的东西不符合标准,所以你需要一个表格来检查“潜在的”伪顶级域名

    【讨论】:

      【解决方案2】:

      .co.uk 是 .uk 顶级域名的 .co 子域。这个问题就dns的实际结构而言没有意义。

      【讨论】:

      • 一直认为 .co.uk 是“一个”而不是子域
      • .uk 中还有其他子域,例如 .ac.uk,与 .edu 类似。这 '。'始终是分隔符。
      【解决方案3】:

      来自 mozilla 的 PublicSuffix 项目就是解决方案。它是一个维护的 TLD 列表。

      您可以使用以下nuget包Nager.PublicSuffix

      PM> Install-Package Nager.PublicSuffix
      

      示例

      var domainParser = new DomainParser(new WebTldRuleProvider());
      
      var domainName = domainParser.Get("sub.test.co.uk");
      //domainName.Domain = "test";
      //domainName.Hostname = "sub.test.co.uk";
      //domainName.RegistrableDomain = "test.co.uk";
      //domainName.SubDomain = "sub";
      //domainName.TLD = "co.uk";
      

      【讨论】:

        【解决方案4】:

        看到这个问题

        Regular expression to retrieve domain.tld

        .NET URI 类当然也可以检索主机名。

        【讨论】:

        • 但这并不能真正回答问题,尤其是 co.uk 案。
        【解决方案5】:

        它被称为顶级域,然后是第一个子域,不是每个人都使用。这是因为第一个 DNS 对拆分列表中的条目进行了反向,以便更快地路由,所以它会解析为

        uk -> co -> example -> www
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-23
          • 1970-01-01
          • 2011-03-28
          相关资源
          最近更新 更多