代码之家  ›  专栏  ›  技术社区  ›  Matt

如何将URL转发到适当的页面?

  •  3
  • Matt  · 技术社区  · 16 年前

    如何转发URL,例如:

    http://www.mysite.com/Join

    到适当的页面:

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

    有办法吗?

    我使用的是dnn-cms,但如果你不熟悉dnn,仍然有一个重定向的解决方案,这将是有帮助的。

    谢谢,
    马特

    6 回复  |  直到 16 年前
        1
  •  4
  •   bdukes Jon Skeet    16 年前

    您可以在dnn中创建“友好url规则”。在“主机设置”页面中,打开“高级设置”部分中的“友好URL”部分。从那里你可以添加一个新的规则,它匹配 .*/Join/Default.aspx 并替换为 ~/JoinOptions/MemberRegistration.aspx (我很确定使用这种url样式会有效,但是我 知道 你可以用一个类似于 ~/Default.aspx?tabid=423 )

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

        2
  •  1
  •   Russ Bradberry    16 年前

    我们曾经使用过一个来自Snowcoverd的DNN模块,您可以在这里获得它: http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&PackageID=7262

    这是15美元,但它会做你需要的,没有任何编码。

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

        3
  •  0
  •   Andy Smith    16 年前

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

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

    把它放到你的根目录中 http://www.mysite.com/ 指向) 阅读apache可能很有用 .htaccess files mod_rewrite 除此之外。

    编辑:OOPS。没有检查标签。

        4
  •  0
  •   braindice    16 年前

    实际上,不用碰iis,不用花任何钱,你就可以用一点小伎俩做到这一点。

    1. 在根目录下创建一个名为join的文件夹
    2. 在该文件夹中添加名为default.aspx的页面
    3. 在下面添加代码

      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
      

    如果更改页面名称,则必须重新编辑该文件,但它仍然有效

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

        5
  •  0
  •   TonyCool    16 年前

    如果您在iis上,可以使用isapi_rewrite3工具。网站的.htaccess将是:

    RewriteBase /
    RewriteRule ^Join/?$ JoinOptions/MemberRegistration.aspx [NC,R=301,L]
    
        6
  •  0
  •   Ian Robinson    16 年前

    又一个选择。可能比公认的答案更像是一个黑客。

    在IIS中启用通配符映射

    这允许无扩展URL工作(例如 http://yoursite.com/Join )

    1. 网站->右键单击->属性
    2. 主目录选项卡->配置
    3. 映射选项卡->通配符部分->“插入”
    4. 浏览到aspnet_isapi.dll(请参阅下面的示例路径)->选择文件
    5. 取消选中“验证文件存在”复选框
    6. 确定确定完成前确定->关闭IIS窗口

    在dnn中创建一个名为“join”的页面并将其重定向到所需的页面

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

    *通常类似于c:\ windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll