トップ回答者
変換するURL件数が多い場合のURLリマッピングについて

質問
-
いつもお世話になります。
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>
回答
-
どっとねっとふぁん様
いつもお世話になります。
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リライト自分でよく調べずに、
すみませんでした。
有難うございました。
すべての返信
-
HttpModuleを利用してURLリライトを行うようなプログラムをひとつ書いてしまったほうが楽なんじゃないでしょうか。
商品コードの追加・削除も自動的に対応できるでしょうし。
http://uchukamen.com/ASPNET20/URLRedirect/
たとえばこんな方法で。
-
どっとねっとふぁん様、ご教授有難うございます。
お教えいただきましたサイトを参考にさせていただき、
作成したモジュール
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 Classweb.configへ追加したコード
<system.web>
<httpModules>
<add name="CustomModule" type="CustomModule"/>
</httpModules></system.web>
上記条件にてテストしてみました。
”RedirectedPage.aspx” にリダイレクトしてくれるのですが、
”RedirectedPage.aspx”ファイルを作成しておかなければなりません。
内部では、Default.aspx
ブラウザ・及びクローラには、RedirectedPage.aspx
の様に表示させることは、出来ないでしょうか?(URLリマッピングを行ったときと同じ表示)
かさねがさね、ご多忙中すみません。
-
どっとねっとふぁん様
いつもお世話になります。
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リライト自分でよく調べずに、
すみませんでした。
有難うございました。