1

.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 のようなサイトを作成することを許可できません。

私が使用するtldが異なるため(site.net、site.mobi、site.co.ukなど)、サブドメインを持つ確実な方法が見つかりませんでした. 初期化。

誰でも私が使用できるスニペットを持っていますか?

4

2 に答える 2

0

単純な正規表現で名前のすべての部分を抽出できます

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;
       }
}
于 2009-09-05T17:33:44.567 に答える
0

私は単純にして、次のようなものを使用したくなるでしょう:

        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");
        }
于 2009-09-05T17:56:58.067 に答える