AEM URL重写

时间:2016-11-20 16:45:03

标签: aem sling

我可以在AEM中广泛地看到两种URL重写方法:

  1. / etc / map / http(s)
  2. 下的吊索映射(吊索:映射)
  3. 使用链接重写器/ TransformerFactory重写URL。
  4. 我想知道哪一个在两个方面更好 - 从易于实现,可扩展性,维护和安全性的角度来看。自动化。

    问候。

2 个答案:

答案 0 :(得分:5)

Sling中的问题始终存在多个选项。如果你看一下主题" URL重写"它有两个维度:

  • 出站 - 例如将链接/content/path/en/about.html缩短为/en/about/
  • 入境 - 例如将来自/en/about/的入站请求映射到资源请求/content/path/en/about.html

<强>外向: URL重写通常由LinkRewriter / TransformerFactory进行出站。 理论上,您还可以更改组件以进行不同的渲染或更改内容。但不建议这样做。 要应用Transformer,您可以使用

  • / etc / map mapping(推荐),简称映射映射条目[1]
    • 增强的映射允许复杂的规则,也适用于基于正则表达式的规则
    • 允许每个域或协议的不同映射
    • 可以确保链接的完全外部化
  • ResourceResolver地图条目[1]
    • 传统制图,非常简单的规则
    • 不考虑域名或协议
    • 需要在更改时重新启动解析器(对于大型生产环境而言可能很昂贵)
  • 自定义TransformerFactory
    • 根据Sax +自定义规则
    • 全力改变出路上的所有链接

<强>入站: 您的入站请求可以在Sling或基础架构级别上重写或映射(Apache HTTPD mod_rewrite或CDN s.a. Akamai)

  • Apache HTTPD mod_rewrite 建议用于生产) - 在将请求转发到Dispatcher模块之前修改请求。推荐,因为它允许增强安全性以及正确和简单的缓存和解除缓存规则
  • 吊索 - 通常不用于生产,因为缓存可能会变得困难
    • 的/ etc /地图
    • ResourceResolver
    • RequestFilter [2]
    • NonExistingResource servlet
  • CDN :与mod_rewrite相同。请求到达Dispatcher之前的入站操作

HTH

[1] https://docs.adobe.com/docs/en/aem/6-2/deploy/configuring/resource-mapping.html

[2] https://sling.apache.org/documentation/the-sling-engine/filters.html

[3] https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html

答案 1 :(得分:3)

这取决于你所指的重写。入境或出境。

当涉及到入站重写时,我建议使用mod_rewrite并使用单一规则正确地重写您的内容 - 这非常有效。

当谈到Outbound重写(处理你的html中的链接)时,你肯定应该使用Sling Mappings - 因为它们更有效和清晰 - 而且它们的设计就是为了这个目的。

看一下这个解释整个重写历程的博客:https://www.cognifide.com/our-blogs/cq/multidomain-cq-mappings-and-apache-configuration/