Предыдущие части:
- Часть 1: Краткий обзор и назначение диспетчера
- Часть 2: Установка рабочей среды
- Часть 3: Настройки рабочей среды для включения кэширования
- Часть 4: Инвалидация кэша
Теперь, когда мы знаем как сконфигурировать базовые параметры диспетчера, мы можем погрузится в глубь продвинутых настроек, которые будут необходимы для настройки продуктивной среды, а также полезны при разработке.
Существует несколько полезных инструментов для использования дополнительных возможностей диспетчера:
- инструменты статического веб-сервера
- 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
- Создайте ноду под /etc/map/http, тип ноды "sling:Mapping”, имя ноды “localhost_any”;
- Добавьте свойства ноды:
- имя свойства “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.
Подробная и полезная документация:
- https://docs.adobe.com/docs/en/cq/5-6-1/deploying/resource_mapping.html
- https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html
Интерфейс 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 Разработчик