首页 > 解决方案 > 如何在 AEM 中向公众隐藏内容/站点结构?

问题描述

我们的网站使用 AEM 6.5 构建。内容结构是这样的 - /content/site/en

我们面临的问题是内容结构在谷歌搜索中可见。例如,如果我们搜索 denim,我们目前得到的结果——

www.site.com/content/site/en/denim.html

预期的结果——

www.site.com/denim.html

从结果中隐藏结构的不同选项可能是什么?谢谢!

标签: apacheaemsling

解决方案


您正在寻找 URL 缩短。本文准确地讨论了如何缩短 URL。

URL 缩短- 当内容作者使用路径选择器管理内部链接时,我们希望相应的锚链接 href 缩短 URL 并附加 .html。最常见的做法是使用 LinkRewriter。this , this , this是相同实现的不同示例。这将负责从 href=/content/site/en/denim.html 更改为 href=/en/denim.html。这是传出链接。

传入链接的资源解析- 接下来我们还需要反向进行。当有人点击 href=www.site.com/en/denim.html 时,我们希望 AEM 将其解析为 /content/site/en/denim 页面。要做到这一点,(通常)有 2 种方法:1)使用 apache 重写规则,2)Sling 资源映射。另一种可能的技术可能是使用 CDN Edge 规则,但我在任何地方都没有看到这一点。

对 AEM 的常见 http 请求采用以下路线:浏览器 -> CDN -> Apache -> AEM 发布者。在这个路径中,我们可以在 Apache 或 AEM 中将 /denim.html 转换为 /content/site/en/denim

Apache 重写规则:当请求到达 apache 时,我们使用mod_rewrite模块将传入流量重写到 AEM 可解析路径。例如,一个简单的规则RewriteRule ^/en/(.*) /content/site/en/$1 [PT]会将 /en/denim./html 更改为 /content/site/en/denim.html。参考这里

  • Apache 将看到 -> /en/denim.html
  • AEM 将看到 -> /content/site/en/denim.html

因此 URL 已解析为 AEM 可理解的路径。AEM 发布者可以轻松解决此资源和渲染路径。

吊索映射:第二种技术是让 apache 成为一个哑缓存机器,将流量直接发送到发布者,并请求发布者解析。

  • Apache 将看到 -> /en/denim.html
  • AEM 将看到 -> /en/denim.html

在 /etc/maps 中,我们实现了 internalRedirectRules。AEM 在开始处理请求之前,会查找 sling 映射,将传入的请求解析为有效的资源路径,然后开始渲染业务。

这两种技术都有优点和缺点。但是 Apache 重写更可取,因为 AEM 已经忙于其他渲染工作。

概括:

  1. 构建链接重写器 - 用于传出链接
  2. 为传入链接构建重写规则/吊索映射器。

推荐阅读