ASP.NET url書き換えと画像防犯チェーン

6383 ワード

現在のサイトの最適化方法はたくさんありますが、その一つがurlの書き換えであり、urlの書き換えが難しいと思っている人が多く、実は簡単です.グローバル・ハンドラのApplication_BeginRequest()イベントで書きます.次は典型的で簡単なurl書き換えの例です.
 1 protected void Application_BeginRequest(object sender, EventArgs e)

 2  {

 3             //         photos-id.html

 4             string strReg = @"photos\-(\d{1,4})\.aspx";

 5             //     

 6             string OverrideUrl = Request.AppRelativeCurrentExecutionFilePath;

 7             Match match = Regex.Match(OverrideUrl, strReg, RegexOptions.IgnoreCase);

 8             if (match.Success)

 9             {

10                 //  id

11                 string id = match.Groups[1].Value;

12                 Context.RewritePath("~/PhotosInfo.aspx?id=" + id);

13             }

14 

15             if (OverrideUrl.ToLower().Contains("index.aspx"))

16             {

17                 Context.RewritePath("~/Index.aspx");

18             }

19 }

画像の防犯チェーンを聞いたことがありますか?前回は何年もウェブサイトをしていた大神が聞いたことがなくて、私はただの初心者です.一つのサイトの上の画像は自分にはありません.他人のサーバーの上の画像を捕まえて自分のサイトの上に置くことです.この時、私たちの資源をこのように利用させたくないので、防犯チェーンを行うことができます.ここでは主にReferrerによって判断される.前回のリクエストのパスと今回のリクエストのパスが一致しているかどうかを判断し、一致している場合は直接アクセスしたこの写真で、一致していない場合は、他の人のサーバを通じて自分のサーバの上に移動します.こちらも同じくApplication_BeginRequest()に書いてあります.
 1                 //    

 2             string rawUrl = Request.RawUrl.ToLower();

 3             if (rawUrl.Contains("/UpLoadImage/"))//              

 4             {

 5                 Uri url = Request.Url;

 6                 Uri reffer = Request.UrlReferrer;

 7                 if (!Commpar(url, reffer))

 8                 {



 9                     //11                     string path = Request.MapPath("~/daolian.jpg");

12                     Response.WriteFile(path);

13                     Response.End();

14                 }

15             }

 
1         //         

2         bool Commpar(Uri url1, Uri url2)

3         {

4             return Uri.Compare(url1, url2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0;

5         }