Hoje em dia, os hosts virtuais ASP.NET geralmente podem vincular vários nomes de domínio, mas as páginas abertas por meio desses nomes de domínio são as mesmas. Como fazer com que esses nomes de domínio vinculados abram páginas diferentes respectivamente (ou seja, para realizar a função de subsites)? Na verdade é muito simples, apenas 4 passos:
1) Vincule vários nomes de domínio ao host virtual, por exemplo: www.abc.com , services.abc.com, support.abc.com.
2) Crie várias pastas no diretório raiz do site host virtual, por exemplo: serviços, suporte, não crie a pasta www;
3) No projeto Web vs 2005, crie as mesmas pastas e adicione um arquivo default.aspx em cada pasta, por exemplo: serviços, suporte.
4) Adicione o evento Application_BeginRequest em Global.asax: protected void Application_BeginRequest(object sender, EventArgs e)
{
string somaDomínio;
string domínio = Request.Url.Host;
// http://localhost não possui "."
int i = domínio.IndexOf('.');
se (eu > 0)
{
// Obtenha a parte antes do primeiro "." do nome de domínio (por exemplo, www.abc.com) (excluindo o primeiro ".")
sumDomain = domain.Substring(0, i);
// Se não for "www", será redirecionado automaticamente para http://www.abc.com/xxx ,
//O URL na barra de endereço não exibirá http://www.abc.com/xxx , mas exibirá http://xxx.abc.com
if (sumDomain.IndexOf("www") == -1)
{
// Observe, esta frase é a chave
HttpContext.Current.RewritePath("~/" + sumDomain + Request.Url.PathAndQuery);
}
}
}
Que tal, não é muito simples! Haha, isso é reescrita de URL (HttpContext.Current.RewritePath).
URL deste artigo: http://www.cnblogs.com/anjou/archive/2006/12/23/601777.html