現在、ASP.NET 仮想ホストは通常、複数のドメイン名をバインドできますが、これらのドメイン名を通じて開かれるページは同じです。これらのバインドされたドメイン名にそれぞれ異なるページを開くようにするには (つまり、サブ Web サイトの機能を実現するには)、どうすればよいでしょうか? 実はとても簡単で、たったの4ステップです。
1) 複数のドメイン名を仮想ホストにバインドします。例: www.abc.com 、services.abc.com、support.abc.com。
2) 仮想ホスト サイトのルート ディレクトリに複数のフォルダーを作成します。たとえば、services、support などのフォルダーは作成されません。
3) vs 2005 Web プロジェクトの下に同じフォルダーを作成し、各フォルダーの下に、default.aspx ファイルを追加します (例: services、support)。
4) Global.asax に Application_BeginRequest イベントを追加します: protected void Application_BeginRequest(object sender, EventArgs e)
{
文字列合計ドメイン;
文字列ドメイン = Request.Url.Host;
// http://localhost には「.」がありません。
int i = ドメイン.IndexOf('.');
if (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