小编Jur*_*nov的帖子

如何防止 AEM/Sling 向无扩展名 URL 添加尾部斜杠?

站点上所有解析为实际节点的无扩展名 URL 都被重定向(使用 301 代码)到它们的版本,并添加了尾部斜杠。它将对前端 Web 服务器的请求量加倍,因此我们希望解决此问题。

我们确实使用 Apache mod_rewrite 将所有传入的 URL(带或不带斜杠)重写为它们的 .html 等效项,以使调度程序缓存一致,但实际处理有点奇怪。

一般来说,我们分三种情况:

  1. URL 有一个扩展名(即 /content/xxx/yyy.html ) - 它被立即处理,没有重定向
  2. URL 尾部有斜杠 ( /content/xxx/yyy/ ) - 它被 mod_rewrite 处理并成功重写到 /content/xxx/yyy.html。没有重定向
  3. 无扩展 URL ( /content/xxx/yyy ) - 由 mod_rewrite 处理,重写为 /content/xxx/yyy.html 并立即重定向到 /content/xxx/yyy/,然后从上面的第 2 点开始执行例程。

为了排除源自 Apache 的重定向,我们禁用了几乎所有模块,例如 mod_dir、mod_negotiation、mod_autoindex 等,以避免由于内容协商或目录索引而导致的重定向,但请求仍在被重定向。

我们的应用程序不包含任何基于 URL 的重定向,所以我想知道是否有任何 OSGI 服务或隐藏的配置设置会触发此类重定向?

我们在站点上还有一组快捷方式,Apache 将它们重写为实际的 URL,并且它们不会被重定向。例如,如果请求 URL 是 /aboutus,它会成功映射到 /content/xxx/yyy/operations/aboutus.html 并在一个循环中处理,无需任何额外的重定向。上述问题仅在 JCR 中存在实际对应节点且请求无扩展性时才有效。

apache mod-rewrite sling aem

5
推荐指数
0
解决办法
1594
查看次数

标签 统计

aem ×1

apache ×1

mod-rewrite ×1

sling ×1