2017-12-03 117 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顯示了實現此目的的選項。
相關問題