【问题标题】:Redirecting all 403 forbidden request to 404 page in aem将所有 403 禁止请求重定向到 aem 中的 404 页面
【发布时间】:2017-12-03 08:18:22
【问题描述】:

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

【问题讨论】:

    标签: apache mod-rewrite aem


    【解决方案1】:

    您可以尝试不同的选项。

    1. 如果意图显示一些友好消息而不是默认的禁止消息,您可以在 AEM 中定义自己的 403 错误处理程序。 在/apps/sling/servlet/errorhandler/ 上覆盖403.jsp 并添加您的自定义html 以显示相关错误消息。在这种情况下,HTTP 响应状态代码仍然是 403。 可以在此 Adob​​e 的博客中找到示例。 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. 您可以在网络服务器中使用mod_rewrite 或PHP 覆盖它。 This SO question 显示了实现此目的的选项。

    【讨论】:

      【解决方案2】:

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

      在你的情况下,它可能是这样的。

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

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

      【讨论】:

      • 会是一个很好的解决方案。但它会拒绝 aem 中其他有用的资源,如 damadmin、misadmin、crx/de 等。
      • 以上解决方案有效!。我必须在 hppd.conf 中添加 ErrorDocument 404/notfound.html,这是一个自定义 404 页面。谢谢
      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 2023-04-09
      • 2018-09-22
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多