2011-01-07 12 views
1

私たちは、既存のシステムを置き換える新しいシステムを開発しています。Homepage.aspxをMVCのデフォルトルートにリダイレクトする方法は?

新しいシステムはASP.NET MVCです。コントローラとアクションへのルートを通常のように定義しています。

従来のASP.NETと同じように、URLは多くの.aspxページで構成されています。

我々は、ユーザが(多くのユーザーがブックマークしていることだろう)/Homepage.aspxにアクセスしようとしたとき、彼らはただ/

何が新しいシステムのデフォルトルート、にリダイレクトますようにリダイレクトを設定したいです私にこれをするための最善の方法ですか?

編集:これは動作します

routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

を、私はアドレスバーにHomepage.aspxをしたくないので、私はリダイレクトを行うにはしたいと思います: @Chance私はルートを指定することを下回る提案。私にできることはほかにありますか?

答えて

5

は、あなたが301の永久リダイレクトを実行しますレガシールートハンドラを実装する方法を示しfollowing blog postを見てみましょうことがあります。

+0

これはトリックでしたが、ブログ記事自体のコードは機能しません。しかし、彼がリンクしているサンプルプロジェクトのコードは次のとおりです:http://www.eworldui.net/files/MvcDemos/LegacyRouting.zip – DaveDev

+1

このサンプルを使用しようとしましたが、フィドラーに301が表示されず、古いURLが表示されますまだブラウザにあります。内部的には、私が望むビューにリダイレクトされます。ブラウザに新しいURLを表示するには? – Picflight

+0

リンクは指定されていません。 – Sudarshan

1

デフォルトのコントローラ/アクションには、ハードコードされた追加のルートを与えることができます。すなわち

routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

+0

これはうまくいきますが、私はアドレスバーに 'Homepage.aspx'を入れたくないのでリダイレクトしたいと思います。 – DaveDev

+0

これは私のためにはうまくいかなかった、上記のコード以外に紛失するものは何か?私はMVC3を使用しています。 – Picflight

+0

@DaveDev、あなたはリダイレクト結果(永久)を返すことができます。 – Chance

0

また、HomePage.aspxをメタリダイレクトに置き換える静的ページを作成することもできます。これにより、サイトが変更されたことを知らせるメッセージをユーザに提示し、ブックマークの更新を促すことができます。

静的ページまたは特定のURLを指すカスタムエラーハンドラを404に作成することで、これをサイト全体に拡張できます。

3

あなたのGlobal.asaxファイルにこのコードを入れてください:

protected void Application_BeginRequest(object sender, EventArgs e) 
{  
    if (Request.Url.ToString().ToLower().Contains("homepage.aspx")) 
    {    
     Context.Response.StatusCode = 301; 
     Context.Response.Redirect("/"); 
    } 
} 

あなたは、他の古い「.aspxの」のページに適用するには、このコードを変更することができます。

関連する問題