1

.aspx拡張子を使用する場合と使用しない場合でリンクを使用できるようにサーバーを構成することは可能です。

はいの場合、どうすればこれを設定できますか。

私はumbracoを使用しているクライアントサイトで作業しています。私はそれがフレンドリーなURL機能を組み込んでいることを知っています。残念ながら、このサイトはすでに公開されており、多くのリンクでこの機能がオンになっています。

問題は、.aspx拡張子を追加せずに、www.sitename.com/promotionなどのプロモーションURLを使用したいということです。また、サイト全体でURL書き換えを有効にし、壊れたリンクをすべて追跡する必要があるという問題を経験したくありません。

4

3 に答える 3

3

スコットガスリーはこれについて良い投稿をしています。

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

于 2008-09-28T19:54:16.113 に答える
1

私は以前に単純な HttpModule を作成することでこれを行ったことがありますが、注意すべき点がいくつかあります。

  • IIS の 404 エラーを aspx ページに向ける必要があります。そうしないと、IIS は ASP.NET ランタイムを呼び出さず、HTTPModule はヒットしません。
  • これは、フル機能の urlrewrite としてではなく、バニティ URL をキャッチしてリダイレクトするのに最適です。
    パブリック クラス UrlRewrite : IHttpModule
    {
        public void Init(HttpApplication アプリケーション)
        {
            application.BeginRequest += (新しい EventHandler(this.Application_BeginRequest));
        }

        private void Application_BeginRequest(オブジェクト ソース, EventArgs e)
        {
            // RawUrl は次のようになります。
            // http://domain.com/404.aspx;http://domain.com/Posts/SomePost/
            if (HttpContext.Current.Request.RawUrl.Contains(";")
                && HttpContext.Current.Request.RawUrl.Contains("404.aspx"))
            {
                // これにより、最初に入力された URL が url[1] に配置されます
                string[] url = HttpContext.Current.Request.RawUrl.ToString().Split(';');

                // URL を解析して目的の場所にリダイレクトし、
                // XML ファイルを使用して、短い URL と実際の URL の間のマッピングを保存できます。

                string newUrl = parseYourUrl(url[1]);
                Response.Redirect(newUrl);
            }

            // ここまで来ると、404.aspx の実際のコンテンツが読み込まれます。
        }

        public void Dispose()
        {
            // インターフェイス IHttpModule を実装するために必要です。
        }
    }
于 2008-09-28T21:53:03.317 に答える
0

「URIの完全な制御」セクションの途中で、これを実現するためのリンクといくつかの方法が提供されています。http: //blogs.msdn.com/bags/archive/2008/08/22/rest-in-wcf-part-ix -controlling-the-uri.aspx

于 2008-09-28T20:06:55.677 に答える