如何在 AEM 调度程序上设置多个域

How to setup multiple domains on AEM dispatcher

我有一个已经托管并使用 AEM 的网站。我有另一个需要托管的域。如果是托管的,需要在同一个AEM系统(Author、Publisher和Dispatcher)上配置什么配置。

它是用于内容内部重定向的 etc/maps 条目和用于处理带有域名的内容路径的 /virtualhosts 条目的组合,请查看这些 and how-to-disable-trace-requests-to-an-aem-publish-instance

您只需在 AEM 中增加 etc/map 条目,以便在 AEM 中使用您的域名和调度程序中的相应虚拟主机条目处理内容重定向。在 AEM-Local Dispatcher Setup & etc/maps

我的博客上有文档

official Adobe documentation 已在之前的帖子中提供给您,但它并没有涵盖实现正确 multi-tenant 设置所需的所有内容。

不幸的是,multi-tenancy 如果没有从一开始就考虑正确并且需要一支高素质的团队,那么 multi-tenancy 可能很难做到。

网络服务器

根据您的 Web 服务器配置,您很可能需要为新域添加一个额外的 VirtualHost 条目。

<VirtualHost *:80>
    ServerName sitea.com
    DocumentRoot /usr/lib/apache/htdocs/content/sitea
    <Directory /usr/lib/apache/htdocs/content/sitea>
        <IfModule disp_apache2.c>
            SetHandler dispatcher-handler
            ModMimeUsePathInfo On
        </IfModule>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
</VirtualHost>

如果您在 Web 服务器级别重写请求,则必须通过相应地配置 mod_rewrite 添加新的重写规则,以便将请求转发到正确的内容路径。

调度员

dispatcher configuration 中,您将必须基于虚拟主机为您的站点创建一个新场。我建议你把它们分成这样的文件:

/farms
{
   $include "farm-sitea.any"
   $include "farm-siteb.any"
   $include "farm-flush.any"
}

注意:确保用户无法使用您的新网站访问其他网站的受限内容。例如,如果 http://sitea.com/secure/page.html 不应可访问,请确保 http://siteb.com/secure/page.html.

也是如此

AEM

如果您利用 Sling Mappings 来解决进入您的 AEM 实例的请求,您将必须在 /etc/map.

下为您的新域添加额外的条目

我写了很多关于 link 重写 here 的主题。

既然您在单个 AEM 实例中托管多个站点,您将需要两个应用程序之间的公共代码库来存储instance-wide配置和实用程序类。您可以包含在这个通用包中的服务配置是:

  • com.day.cq.commons.servlets.RootMappingServlet.xml
  • com.day.cq.rewriter.linkchecker.impl.LinkCheckerImpl.xml
  • com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.xml
  • org.apache.sling.servlets.resolver.SlingServletResolver.xml
  • com.day.cq.commons.impl.ExternalizerImpl.xml

谈到multi-tenancy,有很多事情要考虑。您可能需要涵盖的一些其他领域是:

  • 标记分类法(为内容标记集中定义的名称空间)
  • ACL(网站 A 作者应该能够创作网站 B)
  • 国际化
  • 工作流程(OOTB 工作流程将影响所有网站)
  • 大坝

希望对您有所帮助!