2017-12-03 115 views
0

我正在尝试将所有禁止的请求重定向到404'未找到'页面。 Url我正在尝试访问。 http://localhost:4503/content/mysite/home.html(它工作正常)。 但是,当我尝试访问, http://localhost:4503/content/mysite(这里是禁止的)。 我的网站是在Adobe Experience Manager中开发的,我没有看到任何与重定向相关的配置/设置。所以,我必须在这里的Apache服务器上做一些事情。 我对Apache并不熟悉,并在其中创建规则。 我想问问是否有任何重定向任何禁止的请求 404找不到页面。将所有403禁止的请求重定向到aem的404页面

回答

0

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

就你而言,它可能是类似的。

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

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

+0

会是一个很好的解决方案。但它会拒绝其他有用的资源,如damadmin,misadmin,crx/de等 –

+0

以上解决方案的作品!我必须在hppd.conf中添加ErrorDocument 404/notfound.html,这是一个自定义的404页面。谢谢 –

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. 您可以使用mod_rewritePHP在网络服务器中覆盖它。 This SO question显示了实现此目的的选项。
相关问题