2017-01-19 3 views
1

У нас есть страницы профиля продаж, которые должны быть доступны по первому имени.lastname. Таким образом, пример URL-адреса будет www.mysite.com/mark.handy. Это перенаправление на Find-A-Rep-Detail.aspx? SalesRepWebID = mark.handy.Kentico redirect based off URL

В настоящее время мы создаем большое сложное URL-сообщение, которое просматривает расширение и идет оттуда. Он работает, но означает, что нам нужно управлять этим либо в IIS, либо через web.config на нескольких серверах.

Я ищу способ сделать это внутри kentico. Я знаю, что сайт сообщества имеет страницы профиля, которые, похоже, принимают имя пользователя firstname.aspx и перенаправляются на страницу профиля.

Решение kentico должно проверить URL-адрес, и если расширение не соответствует списку (aspx, html, js, css, asmx и т. Д.), То перенаправление.

Вот и кикер. Наши пользовательские данные не находятся в kentico. у нас есть страница .asps, которая имеет пользовательский элемент управления, который захватывает имя и возвращает html.

Я смотрю на подстановочные URL документы: https://docs.kentico.com/k9/configuring-kentico/configuring-page-urls/wildcard-urls

Возможно ли это в Kentico, или мы должны придерживаться Iis/опций web.config?

ответ

1

Как Kentico подстановочные URL DOCS состояние:

Если вам нужно разрешить точки в именах пользователей и использовать подстановочные URL-адреса с имена пользователей, в то же время, переместите подстановочные в URL страницы в середине URL, например:/Пользователи/{UserName}/Профиль

Если это не вариант, а " firstname.lastname "должна быть последней частью URL-адреса, возможный подход использовать глобальное событие RequestEvents.Begin для обнаружения шаблона «firstname.lastname» и перенаправить на соответствующую страницу.

Предполагая, что вы используете Kentico 10:

[assembly: RegisterModule(typeof(SalesRepRedirector))] 
public class SalesRepRedirector : Module 
{ 
    private static readonly Regex SalesRepRegex = new Regex(@"^\/([a-zA-Z]+\.[a-zA-Z]+)$"); 
    public SalesRepRedirector() : base("SalesRepRedirector") { } 

    protected override void OnInit() 
    { 
     RequestEvents.Begin.Execute += Begin_Execute; 
    } 

    private static void Begin_Execute(object sender, EventArgs e) 
    { 
     var relativePath = RequestContext.CurrentRelativePath; 
     var regexMatch = SalesRepRegex.Match(relativePath); 
     if (regexMatch.Success) 
      URLHelper.Redirect("~/Find-A-Rep-Detail.aspx?SalesRepWebID=" + regexMatch.Groups[1].Value); 
    } 
} 

(Поместите файл в папку App_Code, или в отдельной сборке)

Некоторые вещи, чтобы отметить:

  • Вам нужно настроить регулярное выражение, чтобы убедиться, что перенаправление не влияет на запрос файлов и страниц (.aspx, .css, .js ...)
  • При использовании этого подхода есть некоторые накладные расходы, так как каждый запрос будет проверен на шаблон
+0

Спасибо, Кристиан. –

0

Я думаю, вы можете сделать это в пределах Kentico. Заметьте, я просто предоставляю доказательство концепции здесь и еще не испытал или ничего не создал.

Добавить псевдоним на домашнюю страницу (при условии, что это корень сайта), поэтому он принимает неверный url с именем пользователя. Так что-то вроде /{UsersID}. Затем, используя веб-часть javascript, вы можете проверить параметр url {?UsersID?} и перенаправить их на страницу/Find-A-Rep. Вы даже можете сделать еще один шаг вперед и на странице Find-A-Rep добавить один и тот же псевдоним /Find-A-Rep/{UsersID}, а затем вы можете использовать более дружественный URL-адрес, например /Find-A-Rep/Mark.Handy, и по-прежнему использовать параметр querystring, если вам нужен код.

0

Я сделал быстрый тест, он сортирует, но не 100%, как вам хочется, потому что вы не можете использовать «.». в URL подстановочного знака.

Вы можете создать шаблон поиска-A-Rep-Detail.aspx в шаблоне, используя {? firstname?} и {? lastname?}, чтобы получить значение. Затем в свойстве URL-адреса укажите путь или шаблон в/{firstname} - {lastname}. Если вы используете. вместо -, он будет заменен на -

Таким образом, URL-адрес/john-smith подстановочного знака будет отображаться непосредственно с помощью шаблона Find-A-Rep-Detail.aspx, и вы можете получить имя и фамилию.

Одним из важных моментов для подстановочного URL является правильный шаблон, если префикс отсутствует, а шаблон является просто/{somehting}, то ваши обычные страницы, такие как/aboutus, будут в беде.

0

Здравствуйте, я знаю, что это может быть скорее ручной подход при перечислении всех потенциальных URL-адресов, но вы считаете, что используете этот модуль перенаправления URL из Kentico - http://devnet.kentico.com/articles/url-redirection? Как вы можете перечислить все ваши «от» и «до» URLs все в Kentico