如何将网址转发到相应的网页?

时间:2010-02-02 22:04:36

标签: asp.net url-rewriting dotnetnuke friendly-url forwarding

如何转发网址,例如:

http://www.mysite.com/Join

到适当的页面:

http://www.mysite.com/JoinOptions/MemberRegistration.aspx

有没有办法做到这一点?

我正在使用DNN CMS,但如果您不熟悉DNN并且仍然有重定向的解决方案,那将会有所帮助。

谢谢,
马特

6 个答案:

答案 0 :(得分:4)

您可以在DNN中创建“友好的URL规则”。在“主机设置”页面中,打开“高级设置”部分中的“友好URL”部分。在那里,您可以添加与.*/Join/Default.aspx匹配的新规则,并将其替换为~/JoinOptions/MemberRegistration.aspx(我很确定使用该风格的网址可以使用,但我知道您可以使用~/Default.aspx?tabid=423等网址替换。

使用此方案,您需要确保IIS允许ASP.NET处理请求。最简单的方法是使用名为Default.aspx的文件在文件系统中添加“Join”文件夹。

答案 1 :(得分:1)

我们曾经使用过SnowCovered的DNN模块,您可以在此处获取:http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&PackageID=7262

它只需15美元,但无需任何编码即可满足您的需求。

您将创建一个/Join的网页,并将其重定向到/JoinOptions/MemberRegistration.aspx

答案 2 :(得分:0)

如果您使用的是Apache,则可以创建或编辑包含以下内容的现有.htaccess文件:

RewriteEngine on
redirect 301 /Join http://www.mysite.com/JoinOptions/MemberRegistration.aspx

并将其放在根目录(http://www.mysite.com/指向的目录)中 除此之外,阅读Apache .htaccess filesmod_rewrite可能很有用。

编辑:哎呀。没检查标签。

答案 3 :(得分:0)

实际上,如果没有触摸IIS并且没有花费任何金钱,你可以用一点点诡计来做到这一点。

  1. 在根
  2. 处创建名为JOIN的文件夹
  3. 在该文件夹中添加名为default.aspx的页面
  4. 添加以下代码

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    
        Dim DomainName As String = Null.NullString
            Dim ServerPath As String
            Dim URL() As String
            Dim intURL As Integer
    
            ' parse the Request URL into a Domain Name token 
            URL = Split(Request.Url.ToString(), "/")
            For intURL = 2 To URL.GetUpperBound(0)
                Select Case URL(intURL).ToLower
                    Case "admin", "desktopmodules", "mobilemodules", "premiummodules"
                        Exit For
                    Case Else
                        ' check if filename
                        If InStr(1, URL(intURL), ".aspx") = 0 Then
                            DomainName = DomainName & IIf(DomainName <> "", "/", "") & URL(intURL)
                        Else
                            Exit For
                        End If
                End Select
            Next intURL
    
            ' format the Request.ApplicationPath
            ServerPath = Request.ApplicationPath
            If Mid(ServerPath, Len(ServerPath), 1) <> "/" Then
                ServerPath = ServerPath & "/"
            End If
    
            DomainName = ServerPath & "JoinOptions/MemberRegistration.aspx"
    
            Response.Redirect(DomainName,True)
    
    End Sub
    
  5. 如果更改了页面名称,则必须重新编辑该文件,但它可以正常工作

    注意:可能需要用实际的&符号替换amersan放大器

答案 4 :(得分:0)

如果您使用的是IIS,则可以使用ISAPI_Rewrite3工具。该网站的.htaccess将是:

RewriteBase /
RewriteRule ^Join/?$ JoinOptions/MemberRegistration.aspx [NC,R=301,L]

答案 5 :(得分:0)

又一种选择。可能比接受的答案多一点黑客。

在IIS中启用通配符映射

这允许无扩展名网址有效(例如http://yoursite.com/Join

  1. 网站 - &gt;右键单击 - &gt;特性
  2. 主目录标签 - &gt;构造
  3. 映射标签 - &gt;通配符部分 - &gt; “插入”
  4. 浏览到aspnet_isapi.dll(参见下面的示例路径) - &gt;选择文件
  5. 取消选中“验证文件存在”复选框
  6. ok ok ok ok,直到完成 - &gt;关闭IIS窗口
  7. 在DNN中创建一个名为“加入”的页面,并将其重定向到所需的页面

    添加名称/标题为Join的页面,将其设置为不显示在菜单中,并将其设置为301重定向到所需的URL(这些是页面设置中的所有选项)

    *通常类似于C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll