2

古いasp.netWebフォームサイトをアップグレードしています。URLの見栄えを良くしたいので、次のようなルーティングシステムを使用しています。

void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("account settings",
        "settings/account/",
        "~/accountsettings.aspx");
}

これは正常に機能します。のようなURLはmydomain.com/settings/account/はるかに見栄えがします。ただし、ページには、のように物理的な場所を使用してアクセスできますmydomain.com/accountsettings.aspx。これらの古いフォームのURLへのリクエストを新しいURLに転送したいと思います。

これを行うための最良の方法は何ですか?のように、私が使用できる簡単な方法はありRegisterRoutesますか?

4

1 に答える 1

2

IgnoreRoute を使用して物理ファイルのルートを無視するようルーティング エンジンに知らせる必要があると思います。

routes.IgnoreRoute("accountsettings.aspx");

IgnoreRoute の構文を再確認してください。相対パスを含める必要があるのか​​、ファイル名だけを含める必要があるのか​​覚えていません。

それが機能したら、おそらくglobal.asaxのグローバルエラーハンドラーで生成される404をトラップし、それが要求されたパスである場合はリダイレクトできます。このブログ投稿には、グローバル エラー ハンドラーで 404 をトラップする方法の例があります: http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx

これが公開サイトであり、SEO を懸念している場合は、http ステータス コード 301 を使用して恒久的なリダイレクトであることを指定することを検討することもできます。これにより、Google や他の検索エンジンに、古いページが現在新しい場所に存在し、そのページの価値を失うことはありません。

それが役立つことを願っています!

于 2012-09-25T18:25:02.867 に答える