将所有403禁止请求重定向到aem

时间:2017-12-03 08:18:23

标签: apache mod-rewrite aem

我正在尝试将所有禁止的请求重定向到404' not found'页。 我正在尝试访问的网址。     http://localhost:4503/content/mysite/home.html(工作正常)。 但是当我试图访问时,     http://localhost:4503/content/mysite(这里禁止)。 我的网站是在adobe体验管理器中开发的,我没有看到任何与重定向相关的配置/设置。所以,我必须在这里的Apache服务器上做一些事情。 我并不熟悉Apache并在其中创建规则。 我想问一下是否有任何重定向任何禁止请求的内容 到404找不到页面。

2 个答案:

答案 0 :(得分:1)

您可以尝试不同的选项。

  1. 如果意图是显示一些友好消息而不是默认的禁止消息,则可以在AEM中定义自己的403错误处理程序。 在403.jsp覆盖/apps/sling/servlet/errorhandler/并添加您的自定义html以显示相关的错误消息。在这种情况下,HTTP响应状态代码仍然是403。 可以在Adobe的博客中找到示例。 https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/customizing-errorhandler-pages.html
  2. 如果您不想在响应中使用403 HTTP状态代码,则可以尝试覆盖上述403.jsp中的状态代码。在JSP代码中,如果尚未提交响应,则可以使用HttpServletResponse.setStatus API来设置404状态代码。如果响应已提交,则无法按照此Sling博客https://sling.apache.org/documentation/the-sling-engine/errorhandling.html
  3. 中的说明进行操作
  4. 您可以使用mod_rewritePHP在网络服务器中覆盖它。 This SO question显示了实现此目标的选项。

答案 1 :(得分:0)

您可以在调度程序中使用/ filter部分应用简单规则来指定Dispatcher接受的HTTP请求。所有其他请求都会以404错误代码发送回Web服务器。

在你的情况下,它可能是类似的东西。

/filter {
    /0001  { /glob "*" /type "deny" }
    /0002 { /type "allow" /method "POST" /url "/content/mysite/[.]*.html" }
}

这将首先拒绝访问所有文件,然后允许访问特定内容,在这种情况下,/ mysite下的* .html页面。