我有一个.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。
由于我使用的不同tlds(例如site.net,site.mobi,site.co.uk),我找不到一个有子域名的可靠方法。在里面。
任何人都有我可以使用的片段吗?
答案 0 :(得分: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;
}
}
答案 1 :(得分: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");
}