Asp.netでUrlrewrite

  
を達成するための仮想ホスト上インターネットでは、多くの友人がHttpHandle + Server.Transferの方法を使ってasp.netでurlrewriteを行います。実際、この方法は間違っています。まず、HttpHandleはurlrewriteを実装できません; 2番目のServer.Transferはurlrewriteではなく標準のリダイレクトです。

は実際には、数行のコードを容易に実現することが可能で、彼らは、自分のHttpModuleをを達成していない、HttpHandleをurlrewrite達成する必要はありません。

は、私がここに提示した仮想ホスト上で、仮想ホストサーバは、独自の異なる、IISを変更する権限を持っていない、IISもプラグインIISなどを書き換えるインストールする権限がありません。しかし、必要な機能を簡単に完成させることができます。オープンglobal.asax.csを、保護された無効Application_BeginRequest(オブジェクト送信者、EventArgsの電子)を対象:具体的には、以下の

。メソッド名からそれが何であるかを推測することができます。次のコードを入力します。


保護された無効Application_BeginRequest(オブジェクト送信者、EventArgsの電子)
{文字列oldUrl = HttpContext.Current.Request.RawUrl;
列パターン= @「^ (。+)デフォルト/(\\ d +)\\。aspx(\\?。*)* ___ FCKpd___0";
文字列replace = "$ 1default.aspx?id = $ 2"; if(Regex.IsMatch(oldUrl、 pattern、RegexOptions.IgnoreCase RegexOptions.Compiled))
{string newUrl = Regex.Replace(oldUrl、pattern、replace、
RegexOptions.Compiled RegexOptions.IgnoreCase);
this.Context.RewritePath(newUrl)上記のコードで、私は次のようなURLにアクセスします。... /default /123.aspx、もちろんこのURLは私のコンピュータには存在しません。 ... /default.aspx?id = 123

もちろん、強力な正規表現を使えば、好きなようにURLを上書きできます。サイレントプロセスでは、クライアントには通知されません。仮想ホスト上にあるため、 .aspxファイルをリダイレクトすることしかできませんそれが私たちのサーバーである場合は、他のユーザーがデフォルトでアクセスすることができるように* .mywebなどのタイプを登録することができます。 /456.myweb、default.aspx?id = 456にリダイレクトすることができます一言で言えば、あなたが.netがあなたを達成するのを助けることができる限り、これは多くのコードを必要としません。
Copyright © Windowsの知識 All Rights Reserved