2016-08-24 38 views
0

私は自分のクライアントのために新しいサイトを作成しています。彼らの古いサイトは、ワードプレスを使用して開発され、したがって、それは以下のような壊れたURLの数百を持っていました:ホームURLにハイフンを含むURLをリダイレクトする方法asp.net mvc 5

http://www.example.com/best-gym-in-town/ 
http://www.example.com/video-gallery/ 
http://www.example.com/fun-stuff/ 
http://www.example.com/are-you-a-diabetes-patient/ 
http://www.example.com/john-in-media/ 
http://www.example.com/photo-gallery/ 
http://www.example.com/nutrition-program-that-suits-your-lifestyl/ 
http://www.example.com/our-range-of-fitness-tests/ 
http://www.example.com/corporate-group-workshops/some-article/another-article 

私はasp.netのMVC 5の新しいサイトを開発しています私は、web.configファイルでhttpRedirectルールを書きたいです上記のURLのいずれかを自宅または特定のページにリダイレクトできます。

これまでのところ、これは私が解決策

<location path="about-me"> 
<system.webServer> 
     <httpRedirect enabled="true" destination="/home" 
     httpResponseStatus="Permanent" /> 
</system.webServer> 
</location> 

を考えています。しかし、私は、web.configファイルでこのようなエントリの100Sを書かなければならない方法です。私は、必要に応じて、あなたがGlobal.asaxの内のApplication_Errorメソッドにフックすることができ、

protected void Application_BeginRequest(object sender, EventArgs e) 
{  
    try 
    { 
     if (HttpContext.Current.Request.Url.AbsolutePath.Contains("-")){ 
      HttpContext.Current.Response.RedirectPermanent("/"); 
     } 
    } 
    catch (ThreadAbortException){} 
} 

そこから Application_BeginRequest方法にGlobal.asaxの、フックでより良いと効率的な代替

答えて

0

を探していて、ホームページにリダイレクトしています代わりに404を検出してください。

protected void Application_Error(Object sender, EventArgs e) 
{  
    var exception = Server.GetLastError(); 

    if (exception != null && exception == 404) 
    {  
     try 
      { 
      Response.Clear(); 
      Server.ClearError(); 
      Response.Redirect("/");  
      } 
     } 
     catch (ThreadAbortException){} 
    } 
} 
+0

私はbeginrequestイベントとテストをフックしようとします。提案ありがとう。私はまだ設定ベースの方法を探してみます。 –

+0

さらに進化したい場合は、古いURLから新しいURLへのマッピングを持つDB/Configに対してルックアップを追加できます。 – timkly

+0

それはまた良い考えです。 –

関連する問題