В настоящее время виртуальные хосты ASP.NET обычно могут связывать несколько доменных имен, но страницы, открываемые через эти доменные имена, одинаковы. Как заставить эти связанные доменные имена соответственно открывать разные страницы (то есть реализовать функцию подсайтов)? На самом деле все очень просто, всего 4 шага:
1) Привязать к виртуальному хосту несколько доменных имен, например: www.abc.com , Services.abc.com, support.abc.com;
2) Создайте несколько папок в корневом каталоге сайта виртуального хоста, например: Services, Support не создавайте папку www;
3) В веб-проекте vs 2005 создайте такие же папки и добавьте файл default.aspx в каждую папку, например: Services, Support.
4) Добавьте событие Application_BeginRequest в Global.asax: protected void Application_BeginRequest(отправитель объекта, EventArgs e)
{
строка sumDomain;
строковый домен = Request.Url.Host;
// http://localhost не имеет "."
int я = домен.IndexOf('.');
если (я > 0)
{
// Получаем часть перед первым "." доменного имени (например, www.abc.com) (исключая первый ".")
sumDomain = domain.Substring(0, i);
// Если это не «www», произойдет автоматическое перенаправление на http://www.abc.com/xxx ,
//URL-адрес в адресной строке не будет отображать http://www.abc.com/xxx , но будет отображать http://xxx.abc.com.
если (sumDomain.IndexOf("www") == -1)
{
// Обратите внимание: это предложение является ключевым
HttpContext.Current.RewritePath("~/" + sumDomain + Request.Url.PathAndQuery);
}
}
}
Как насчет этого, не правда ли, ха-ха, это перезапись URL-адресов (HttpContext.Current.RewritePath).
URL этой статьи: http://www.cnblogs.com/anjou/archive/2006/12/23/601777.html.