요즘 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) Global.asax에 Application_BeginRequest 이벤트를 추가합니다: protected void Application_BeginRequest(object sender, EventArgs e)
{
문자열 sumDomain;
문자열 도메인 = Request.Url.Host;
// http://localhost에는 "."이 없습니다.
int i = domain.IndexOf('.');
만약 (i > 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 은 표시합니다.
if (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