AEM URL重写

Fin*_*inn 2 sling aem

我可以大致看到AEM中URL重写的两种方法:

  1. 在/ etc / map / http下的悬吊映射(sling:Mapping)
  2. 使用链接重写器/ TransformerFactory重写URL。

我想知道两者中哪一个更好-从易于实施,可扩展性,维护和自动化的角度来看。

问候。

ub1*_*b1k 5

这取决于您指的是哪种重写。入站或出站。

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

当涉及到出站重写(处理 html 中的链接)时,您绝对应该使用 Sling Mappings - 因为它们更有效和清晰 - 它们就是为此目的而设计的。

看看这个博客,它解释了整个重写过程:https : //www.cognifide.com/our-blogs/cq/multidomain-cq-mappings-and-apache-configuration/


cwo*_*tge 5

对于Sling中的问题,总是有多种选择。如果查看“ URL重写”主题,它有两个维度:

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

出站:URL重写通常由LinkRewriter / TransformerFactory进行出站。从理论上讲,您还可以更改组件以进行不同的渲染或更改内容。但这是不推荐的。要应用变形金刚,您可以使用

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

入站:之前,您的入站请求可以在Sling或基础结构级别上重写或映射(Apache HTTPD mod_rewrite或CDN sa Akamai)

  • Apache HTTPD mod_rewrite建议用于生产环境)-在将请求转发到Dispatcher模块之前对其进行修改。推荐使用,因为它可以增强安全性以及适当且简单的缓存和解缓存规则
  • 吊索 -通常不用于生产,因为缓存可能会变得困难
    • / etc / map
    • 资源解析器
    • RequestFilter [2]
    • NonExistingResource Servlet
  • CDN:与mod_rewrite相同。请求到达分派器之前的入站操作

高温超导

[1] https://docs.adobe.com/docs/zh-CN/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