子域名 asp.net 站点中带有 . 的伪子域

发布于 2024-08-03 19:04:19 字数 550 浏览 5 评论 0原文

我有一个 .net 站点和几个带有指向它的通配符 dns 的域。我使用伪子域系统,使用以下代码从 url 中提取子域名

    public static string GetSubdomain()
{
    string domain = HttpContext.Current.Request.Url.Host;
    if (domain.Substring(0, 4).ToLower() == "www.")  // if www exists in the url such as www.subdomain.acme.com
        domain = domain.Remove(0, 4);
    return domain;
}

代码有一些限制。我不能允许用户创建像 subdomain.subdomain.domain.com 这样的网站,但 subdomain.domain.com 。

由于我使用的顶级域名(例如 site.net、site.mobi、site.co.uk)不同,我找不到一种可靠的方法来使用 .在其中。

有人有我可以使用的片段吗?

I have a .net site and couple of domains with wildcard dns pointing to it. I use pseudo subdomain system where i extract subdomain name from url with below code

    public static string GetSubdomain()
{
    string domain = HttpContext.Current.Request.Url.Host;
    if (domain.Substring(0, 4).ToLower() == "www.")  // if www exists in the url such as www.subdomain.acme.com
        domain = domain.Remove(0, 4);
    return domain;
}

Code has some limitations. I can not allow users to create sites like subdomain.subdomain.domain.com but subdomain.domain.com.

Due to differend tlds i use (such as site.net, site.mobi, site.co.uk) i couldn't find a solid way to have subdomains with . in it.

Anyone have a snippet where i can use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

第几種人 2024-08-10 19:04:19

您可以使用简单的正则表达式提取名称的所有部分

using System.Text.RegularExpressions;    
void MatchRegex()
{
        Regex regex = new Regex(@"(?<subdomain>([^\.]*[\.])*)(?<domain>[^\.]+)[\.](?<tld>[^\.]+)$");
        string input = @"sub1.sub2.ttt.com";

        Match   match = regex.Match(input);
       if( match != null )
       {

          string   subDomain = match.Groups["subdomain"].Value;
          string   domain = match.Groups["domain"].Value;
          string   tld = match.Groups["tld"].Value;
       }
}

You can extract all parts of the name with a simple regex

using System.Text.RegularExpressions;    
void MatchRegex()
{
        Regex regex = new Regex(@"(?<subdomain>([^\.]*[\.])*)(?<domain>[^\.]+)[\.](?<tld>[^\.]+)$");
        string input = @"sub1.sub2.ttt.com";

        Match   match = regex.Match(input);
       if( match != null )
       {

          string   subDomain = match.Groups["subdomain"].Value;
          string   domain = match.Groups["domain"].Value;
          string   tld = match.Groups["tld"].Value;
       }
}
糖粟与秋泊 2024-08-10 19:04:19

我很想变得简单并使用类似的东西:

        string fqdn = "test.mydomain.co.uk";
        string[] validDomains = new string[] { "mydomain.co.uk", "mydomain.com", "mydomain.mobi" };

        char[] matchChars = new char[] { '.' };

        string[] stringSegments = fqdn.Split(matchChars, 2);
        if (validDomains.Contains(stringSegments[1]))
        {
            Console.WriteLine("Domain Valid");
        }
        else
        {
            Console.WriteLine("Domain Invalid");
        }

I'd be tempted to go simple and use something like:

        string fqdn = "test.mydomain.co.uk";
        string[] validDomains = new string[] { "mydomain.co.uk", "mydomain.com", "mydomain.mobi" };

        char[] matchChars = new char[] { '.' };

        string[] stringSegments = fqdn.Split(matchChars, 2);
        if (validDomains.Contains(stringSegments[1]))
        {
            Console.WriteLine("Domain Valid");
        }
        else
        {
            Console.WriteLine("Domain Invalid");
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文