AXAMIT logo
Домашняя Страница Блог 2016 AEM Dispatcher. Часть 5: Полезные инструменты

AEM Dispatcher. Часть 5: Полезные инструменты

AEM Dispatcher. Часть 5: Полезные инструменты

Предыдущие части:


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

Существует несколько полезных инструментов для использования дополнительных возможностей диспетчера:

  • инструменты статического веб-сервера
    • rewrite модуль
  • инструменты AEM для маппинга
    • дерево маппингов /etc/map в репозитории
    • интерфейс ResourceProvider

Rewrite модуль

Чтобы подключить rewrite модуль, раскомментируйте следующую строку вашего файла httpd.conf:

LoadModule rewrite_module modules/mod_rewrite.so

Начальные настройки для rewrite модуля выглядят примерно так:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteLog "logs/rewrite.log"
    RewriteLogLevel 9
#    ваше правило 1
#    ваше правило 2
    …
#    ваше правило n
</IfModule>

Простой пример использования rewrite модуля:

RewriteRule ^/en(.*)\.html$ /content/geometrixx/en$1.html [R]

Это правило обеспечивает перенаправление запросов с адресами, начинающимися с /en и расширением html, на адреса с таким же расширением, но начинающимися на /content/geomentrixx/en.

Подробная и полезная документация:

Дерево маппингов etc/map в репозитории

Маппинг ресурсов используется для определения перенаправлений, кратких удобных URL-адресов и виртуальных хостов для AEM:

  • /etc/map - дерево маппингов для всех ресурсов;
  • /etc/map/http - маппинги ресурсов для http-запросов.

Список маппингов вашего AEM-сервера находится на странице http://host:port/system/console/jcrresolver

Пример: маппинг, который к адресу любого запроса на AEM-сервер http://localhost:4503 добавляет приставку /content

  1. Создайте ноду под /etc/map/http, тип ноды "sling:Mapping”, имя ноды “localhost_any”;
  2. Добавьте свойства ноды:
    • имя свойства “sling:match”, тип свойства “String”, значение свойства “localhost.4503/”;
    • имя свойства “sling:internalRedirect”, тип свойства “String”, значение свойства “/content/”.

Этот маппинг будет обрабатывать такие запросы, как http://localhost:4503/geometrixx/en/products.html, будто на самом деле запрашивался ресурс http://localhost:4503/content/geometrixx/en/products.html. Однако, этот пример сломает работу запросов к ветке clientlibs и другим ресурсам, расположенным вне ветки ресурсов /content.

Подробная и полезная документация:

Интерфейс ResourceProvider

Для создания своих собственных деревьев ресурсов вы можете использовать интерфейс ResourceProvider.

public interface ResourceProvider {
    Resource getResource(ResourceResolver var1, String var2);
    Iterator<Resource> listChildren(Resource var1);
}

Указать корневые пути для вашей реализации ResourceProvider вы можете в свойствах:

@Properties({
       @Property(
               label = "Root paths",
               description = "Root paths this Sling Resource Provider will respond to",
               name = ResourceProvider.ROOTS,
               value = {"/content/mount/samples"})
})

Подробная и полезная документация:

Резюме

Вышеуказанные инструменты предоставляют дополнительные возможности использования свойств диспетчера:

  • httpd rewrite модуль;
  • дерево маппингов AEM репозитория;
  • интерфейс ResourceProvider.

Мы лишь бегло осмотрели эти инструменты. Если вы хотите пользоваться ими эффективно, то вам следует изучать соответствующую подробную документацию для каждого инструмента.

Автор: Виталий Киселев, AEM Разработчик

Автор

Виталий Киселев
  • Виталий Киселев
  • Certified AEM Developer