none
変換するURL件数が多い場合のURLリマッピングについて RRS feed

  • 質問

  • いつもお世話になります。

     

    http://www.atmarkit.co.jp/fdotnet/dotnettips/503aspurlmapping/aspurlmapping.html

    上記ページを参考にさせていただきURLリマッピングを行っております。

     

     

    <urlMappings enabled="true">
          <add url="~/GoodsItem0010.aspx"
            mappedUrl="~/GoodsItem.aspx?GoodsId=0001" />
          <add url="~/GoodsItem0100.aspx"
            mappedUrl="~/GoodsItem.aspx?GoodsId=0100" />
    </urlMappings>

     

    商品コードをクエリーパラメータに設定しております。

     

    Web.configへのURL記述数が1,000以上になると現在レンタルさせていただいている

    サーバにおいて、初回起動時に負荷が掛かってしまうらしいのですが。

     

    *マッピング対象のURL(商品コード)が追加・削除になるたびに、ローカルでWeb.configを書き直し

    そのつど、サーバへアップしております。

     

    初回起動時にサーバへの負担をなくす(軽減する)方法がございましたら、

    お教えいただけないでしょうか?

     

    上記ご多忙とは存じますが、宜しくお願いいたします。

    <urlM<urlMappings enabled="true">
          <add url="~/Morning.html"
            mappedUrl="~/UrlMapping.aspx?category=morning" />
          <add url="~/Night.aspx"
            mappedUrl="~/UrlMapping.aspx?category=night" />
        </urlMappings>
      </system.web>
    </configuration> appings enabled="true">
          <add url="~/Morning.html"
            mappedUrl="~/UrlMapping.aspx?category=morning" />
          <add url="~/Night.aspx"
            mappedUrl="~/UrlMapping.aspx?category=night" />
        </urlMappings>
      </system.web>
    </configuration>

    <urlMappings enabled="true">
          <add url="~/Morning.html"
            mappedUrl="~/UrlMapping.aspx?category=morning" />
          <add url="~/Night.aspx"
            mappedUrl="~/UrlMapping.aspx?category=night" />
        </urlMappings>
      </system.web>
    </configuration>

    2008年2月22日 8:19

回答

  • どっとねっとふぁん様

    いつもお世話になります。

     

    Imports System
    Imports System.Web
    Public Class UrlRewriteModule
        Implements IHttpModule
        Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
            AddHandler context.BeginRequest, AddressOf Me.Application_BeginRequest
        End Sub


        Private Sub Application_BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim application As HttpApplication = CType(source, HttpApplication)
            If application.Request.RawUrl.Contains("Default.aspx") Then
                application.Context.RewritePath("~/Default3.aspx")
            Else
            End If
        End Sub


        Public Sub Dispose() Implements IHttpModule.Dispose
            ' No ImplementsUrlRewriteModule
        End Sub


    End Class

     

    上記コードでうまくいきました。

     

     

    URLリダイレクト、URLリライト自分でよく調べずに、

    すみませんでした。

    有難うございました。

     

     

    2008年2月26日 3:13

すべての返信

  • HttpModuleを利用してURLリライトを行うようなプログラムをひとつ書いてしまったほうが楽なんじゃないでしょうか。

    商品コードの追加・削除も自動的に対応できるでしょうし。

     

    http://uchukamen.com/ASPNET20/URLRedirect/

     

    たとえばこんな方法で。

     

    2008年2月22日 11:02
  •  どっとねっとふぁん様、ご教授有難うございます。

     

    お教えいただきましたサイトを参考にさせていただき、

     

    作成したモジュール

    Imports Microsoft.VisualBasic

    Public Class CustomModule
        Implements IHttpModule
       

      Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
            AddHandler context.BeginRequest, AddressOf Me.Application_BeginRequest
        End Sub


        Private Sub Application_BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim application As HttpApplication = CType(source, HttpApplication)
            If application.Request.Url.AbsoluteUri.EndsWith("Default.aspx") Then
                application.Response.Redirect("RedirectedPage.aspx")
            End If
        End Sub


        Public Sub Dispose() Implements IHttpModule.Dispose
            ' No Implements
        End Sub


    End Class

     

     

    web.configへ追加したコード

    <system.web>

     

    <httpModules>
          <add name="CustomModule" type="CustomModule"/>
    </httpModules>

     

    </system.web>

     

    上記条件にてテストしてみました。

     

     

    ”RedirectedPage.aspx” にリダイレクトしてくれるのですが、

    ”RedirectedPage.aspx”ファイルを作成しておかなければなりません。

     

     

    内部では、Default.aspx

    ブラウザ・及びクローラには、RedirectedPage.aspx

    の様に表示させることは、出来ないでしょうか?(URLリマッピングを行ったときと同じ表示)

     

    かさねがさね、ご多忙中すみません。

     

     

     

     

    2008年2月23日 8:23
  • 何がしたいのかこの文面だけだとよくわかりませんが。。。

     

    >       If application.Request.Url.AbsoluteUri.EndsWith("Default.aspx") Then
    >            application.Response.Redirect("RedirectedPage.aspx")
    >        End If

    このプログラムで何をしているか、意味わかってます?

    わかってないなら、まず自分が書いたプログラムの意味をきちんと調べてみましょう。

    • 回答の候補に設定 ys16good 2012年9月20日 2:44
    2008年2月25日 2:20
  • どっとねっとふぁん様

    いつもお世話になります。

     

    Imports System
    Imports System.Web
    Public Class UrlRewriteModule
        Implements IHttpModule
        Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
            AddHandler context.BeginRequest, AddressOf Me.Application_BeginRequest
        End Sub


        Private Sub Application_BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim application As HttpApplication = CType(source, HttpApplication)
            If application.Request.RawUrl.Contains("Default.aspx") Then
                application.Context.RewritePath("~/Default3.aspx")
            Else
            End If
        End Sub


        Public Sub Dispose() Implements IHttpModule.Dispose
            ' No ImplementsUrlRewriteModule
        End Sub


    End Class

     

    上記コードでうまくいきました。

     

     

    URLリダイレクト、URLリライト自分でよく調べずに、

    すみませんでした。

    有難うございました。

     

     

    2008年2月26日 3:13