Как я могу переслать URL на соответствующую страницу?

Как я могу переслать URL, такой как:

http://www.mysite.com/Join

на соответствующую страницу:

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

Есть ли способ сделать это?

Я использую DNN CMS, но если вы не знакомы с DNN и у вас есть решение для перенаправления, это будет полезно.

Спасибо,
Matt

6 ответов

Решение

Вы можете создать "дружественное правило URL" в DNN. На странице "Настройки хоста" откройте раздел "Дружественный URL" в разделе "Дополнительные настройки". Оттуда вы можете добавить новое правило, которое соответствует .*/Join/Default.aspx и заменяет его ~/JoinOptions/MemberRegistration.aspx (Я вполне уверен, что использование этого стиля URL будет работать, но я знаю, что вы можете заменить на URL, как ~/Default.aspx?tabid=423).

Используя эту схему, вы должны убедиться, что IIS позволяет ASP.NET обрабатывать запрос. Самый простой способ сделать это - добавить в вашу файловую систему папку "Join" с файлом Default.aspx.

Когда-то мы использовали модуль DNN из SnowCovered, вы можете получить его здесь: http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&PackageID=7262

Это 15 долларов, но он будет делать то, что вам нужно, без какого-либо кодирования.

Вы создадите страницу, которая /Join и перенаправить его на /JoinOptions/MemberRegistration.aspx

Если вы используете IIS, вы можете использовать инструмент ISAPI_Rewrite3..Htaccess для сайта будет:

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

Если вы используете Apache, вы можете создать или отредактировать существующий файл.htaccess, содержащий:

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

И поместите его в свой корневой каталог (каталог, на который указывает http://www.mysite.com/). В дополнение к этому может быть полезно прочитать файлы Apache .htaccess и mod_rewrite.

Редактировать: Ой. Не проверял теги.

Еще один вариант. Вероятно, немного больше взлома, чем принятый ответ.

Включить сопоставление с подстановочными знаками в 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

На самом деле, не касаясь 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 на настоящий амперсанд

Другие вопросы по тегам