我有一个.net网站和几个域名与通配符域名指向它。我使用伪子域名系统,我用下面的代码从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),我找不到一个可靠的方法来创建子域。在里面。
谁有我可以用的片段?
发布于 2009-09-05 17:33:45
您可以使用一个简单的正则表达式提取名称的所有部分
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-05 17:56:58
我很想简单一点,使用下面这样的东西:
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");
}https://stackoverflow.com/questions/1383747
复制相似问题