|
Here is my code from urlrewritemodule. Note this is a customized hardcoded solution you can use for a single website only. It is also written for child portals so may need tweaking if you are not accessing urls at domain instead of domain/child/ as the extra / affects parsing.
So if you had domain/child/events/34/my-event-name.aspx in your code you would do a request.pararms("events") to get 34.
Note I also added a case if a tab was not found. In that case I redirect to my tabname 'guide'. And my code extracts 'whatever' from whatever.aspx and redirects it with the parameter name of my choosing (in this case topic). So what happens is my wiki module does a request.param("topic") and gets topic==whatever when I enter a url domain.com/child/whatever.aspx by rewriting it to domain/child/default.aspx?tabid=xyz&topic=whatever.
Private Function checkYAPTabPath(ByVal tabpath As String, ByVal yapToken As String, ByVal directedTab As String, Optional ByRef qs As String = "") As String
If tabpath.IndexOf(yapToken) >= 0 Then
tabpath = tabpath.Replace("//", "/")
Dim locSplit As String()
locSplit = tabpath.Split("/".ToCharArray)
If locSplit.Length > 2 Then
qs = "&" & yapToken & "=" & locSplit(2)
tabpath = "//" & locSplit(1) & "//" & locSplit(locSplit.Length - 1)
tabpath = tabpath.Substring(0, tabpath.LastIndexOf("//")).Replace("//" & yapToken, "") & "//" & directedTab
Else
tabpath = "//" & locSplit(1)
' qs = "&" & yapToken & "=" & locSplit(2)
End If
End If
Return tabpath
End Function
Private Function IdentifyByTabPath(ByVal app As HttpApplication) As Boolean
Dim domain As String = ""
Dim url As String = app.Request.Url.ToString()
If (url.ToLower().StartsWith("http://")) Then
url = url.Replace("http://", "")
End If
' Remove QueryString if it exists
If (app.Request.Url.Query <> "") Then
url = url.Replace(app.Request.Url.Query, "")
End If
Dim wikiTabID As Integer = 0
Dim splitUrl() As String = url.Split(Convert.ToChar("/"))
Dim tabPath As String
Dim myAlias As String = ""
If (splitUrl.Length > 0) Then
For Each urlPart As String In splitUrl
If (myAlias = "") Then
myAlias = urlPart
Else
myAlias = myAlias & "/" & urlPart
End If
Dim objPortalAlias As PortalAliasInfo = PortalSettings.GetPortalAliasInfo(myAlias)
If Not objPortalAlias Is Nothing Then
Dim portalID As Integer = objPortalAlias.PortalID
' Identify Tab Name
tabPath = url.Replace(myAlias, "").ToLower()
' Default Page has been Requested
If (tabPath = "/" & glbDefaultPage.ToLower()) Then
Return True
End If
If (tabPath = "/login.aspx") Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?portalid=" & portalID.ToString() & "&ctl=login")
Return True
End If
If (tabPath = "/register.aspx") Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?portalid=" & portalID.ToString() & "&ctl=Register")
Return True
End If
If (tabPath = "/terms.aspx") Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?portalid=" & portalID.ToString() & "&ctl=Terms")
Return True
End If
If (tabPath = "/privacy.aspx") Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?portalid=" & portalID.ToString() & "&ctl=Privacy")
Return True
End If
If (tabPath = "/signup.aspx") Then
tabPath = "/users.aspx"
End If
If (tabPath = "/restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/activity-venues.aspx") Then
tabPath = "/mycity.aspx"
ElseIf tabPath.IndexOf("-theaters.aspx") >= 0 Then
If (tabPath = "/indie-theaters.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/movie-theaters.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/movie-grill-theaters.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/stage-theaters.aspx") Then
tabPath = "/mycity.aspx"
End If
ElseIf tabPath.IndexOf("/dallas-") >= 0 Then
If (tabPath = "/dallas-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-night-clubs.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-golf-courses.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-comedy-clubs.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-piano-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-chinese-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-american-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-steak-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-japanese-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-pizza-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-movie-theaters.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dallas-hotels.aspx") Then
tabPath = "/mycity.aspx"
End If
ElseIf tabPath.IndexOf("/fort-worth-") >= 0 Then
If (tabPath = "/fort-worth-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/fort-worth-night-clubs.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/fort-worth-restaurants.aspx") Then
tabPath = "/mycity.aspx"
End If
ElseIf tabPath.IndexOf("-bars.aspx") >= 0 Then
If (tabPath = "/martini-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/piano-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/sports-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/karaoke-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/country-bars.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/dive-bars.aspx") Then
tabPath = "/mycity.aspx"
End If
ElseIf (tabPath = "/steak-houses.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/cafe-diners.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/coffee-houses.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/delicatessens.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/ice-cream-parlors.aspx") Then
tabPath = "/mycity.aspx"
ElseIf tabPath.IndexOf("-restaurants.aspx") >= 0 Then
If (tabPath = "/american-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/sushi-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/tapas-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/thai-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/vegetarian-restaurants.aspx") Then
tabPath = "/mycity.aspx"
ElseIf (tabPath = "/vietnamese-restaurants.aspx") Then
tabPath = "/mycity.aspx"
End If
End If
tabPath = tabPath.Replace("/", "//")
tabPath = tabPath.Replace(".aspx", "")
Dim yapQS As String = ""
tabPath = Me.checkYAPTabPath(tabPath, "locations", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "museums", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "casinos", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "parks", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "restaurants", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "theaters", "mycity", yapQS)
tabPath = Me.checkYAPTabPath(tabPath, "trails", "mycity", yapQS)
Dim objTabController As New TabController
Dim objTabs As ArrayList = objTabController.GetTabs(portalID)
For Each objTab As TabInfo In objTabs
If objTab.TabName.ToLower = "guide" Then
wikiTabID = objTab.TabID
End If
If (objTab.IsDeleted = False And objTab.TabPath.ToLower() = tabPath) Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?TabID=" & objTab.TabID.ToString() & yapQS)
Return True
End If
Next
Else
End If
Next
If wikiTabID > 0 Then
RewriterUtils.RewriteUrl(app.Context, "~/" & glbDefaultPage & "?TabID=" & wikiTabID.ToString() & "&topic=" & tabPath.Replace("//", "").Replace("-", "+"))
Return True
End If
Else
' Should always resolve to something
Return False
End If
End Function
|