2017-01-26 5 views
0

Итак, у меня есть структура контента Root -> Folder -> Content page. Естественным URL-адресом для этого является /foldername/pagename, и я пытаюсь выяснить, как сделать это всегда просто /pagename.Как заставить Kentico обрабатывать URL-адреса, как будто папка вообще не существует?

Я могу сделать /pagename перенаправлением на /foldername/pagename, но он по-прежнему отображается как последний в адресной строке. Я сброшенные вокруг с URL переписывает в web.config и у меня есть это:

<rule name="Content" stopProcessing="true"> 
    <match url="^Content/(.*)" /> 
    <action type="Rewrite" url="/{R:1}" /> 
</rule> 

Но это, кажется, не делать ничего. Любые идеи, как я могу настроить свой сайт Kentico для обработки URL-адресов, как будто /foldername не существует вообще?

ответ

3

Два способа добиться этого.

  • Вручную укажите путь URL на странице. В приложении «Страницы» откройте страницу и нажмите вкладку «URL». Заполните поле «Путь или узор» с помощью пути, например. /pagename

    enter image description here

  • Если вы не согласны с ручной установкой URL-путь, создать global event handler, чтобы установить правильный URL путь по созданию документов (и, возможно, обновление документа). Вот пример:

    [assembly: RegisterModule(typeof(PagePathModule))] 
    public class PagePathModule : Module 
    { 
        public PagePathModule() : base("PagePathModule") { } 
    
        protected override void OnInit() 
        { 
         DocumentEvents.Insert.After += DocumentInsertAfter; 
        } 
    
        private static void DocumentInsertAfter(object sender, DocumentEventArgs e) 
        { 
         var node = e.Node; // TreeNode of the created document 
    
         var urlPath = "/" + node.DocumentName; // Use the document name as the path 
    
         node.DocumentUseNamePathForUrlPath = false; // Ensure that a custom URL path is used 
         node.DocumentUrlPath = TreePathUtils.GetSafeUrlPath(urlPath, node.NodeSiteName); // Set the document URL path 
         node.Update(); 
        } 
    } 
    

    Вы должны убедиться, что вы вычеркиваете ненужные символы из пути.

+0

Невозможно получить код для запуска. Нужно ли мне регистрировать его в Kentico где-нибудь, чтобы он работал? Я предположил, что классы в папке App_Data обрабатываются автоматически. http://i.imgur.com/2FBpQoQ.png – Jazcash

+1

Nevermind! Только что нашел часть, которая упоминает, что она должна находиться в папке Old_App_Code для веб-приложений. Он работает сейчас, спасибо! – Jazcash