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

时间:2017-02-03 22:52:35

标签: apache webserver aem dispatcher vhosts

我有一个已经托管并使用AEM的网站。我有另一个需要托管的域名。如果托管,则需要在同一AEM系统(作者,发布者和调度程序)上配置哪些配置。

2 个答案:

答案 0 :(得分:3)

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

不幸的是,如果多租户从一开始就没有被考虑过并且需要一个非常称职的团队,那么很多事情就很难做到。

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符合/etc/map

<强> AEM

如果您正在利用Sling Mappings来解决进入AEM实例的请求,则必须在style.header下为新域添加其他条目。

我已经就链接重写here的主题撰写了大量文章。

现在您在一个AEM实例中托管多个站点,您需要在两个应用程序之间使用公共代码库来存储实例范围的配置和实用程序类。您可以包含在此公共包中的服务配置是:

  • 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

在多租户方面,有很多需要考虑的问题。您可能需要涵盖的一些其他方面是:

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

希望这有帮助!

答案 1 :(得分:0)

它是内容重定向的etc/maps条目和处理带有域名的内容路径的/virtualhosts条目的组合,请查看这些how-can-i-prevent-exposing-of-content-hiererchy-paths和{ {3}}

您只需要在AEM中增加etc/map条目,以便在AEM中使用您的域名和调度程序中的相应虚拟主机条目来处理内容重定向。我的博客上有how-to-disable-trace-requests-to-an-aem-publish-instance

的文档