Как я могу переслать URL на соответствующую страницу?
Как я могу переслать URL, такой как:
на соответствующую страницу:
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)
- Веб-сайт -> правой кнопкой мыши -> свойства
- Вкладка домашнего каталога -> конфигурация
- Вкладка "Сопоставление" -> раздел подстановочных знаков -> "вставить"
- Перейдите к aspnet_isapi.dll (см. Пример пути ниже) -> выберите файл
- снимите флажок "проверить файл существует"
- ок ок ок ок до> - закрыть окно IIS
Создайте страницу в DNN под названием "Присоединиться" и перенаправьте ее на нужную страницу.
Добавьте страницу с именем / заголовком Join, установите ее так, чтобы она не отображалась в меню, и установите для нее значение 301 перенаправить на нужный URL-адрес (это все параметры в настройках страницы)
* обычно что-то вроде C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
На самом деле, не касаясь IIS и не тратя денег, вы можете сделать это с небольшой хитростью.
- Создайте папку с именем JOIN в корне
- Добавьте страницу с именем default.aspx в эту папку
добавьте код ниже
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 на настоящий амперсанд