You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

The 404 Handler

What should the user see when they ask for page that doesn't exist ?
If using Tomcat you can use the web.xml file to specify an error page.

For this example let's assume that your magnolia site is under /index/
and that you have created your own 404.html error page under that..ie

/index/404.html

Edit the magnoliaPublic web.xml (inside webapps\magnoliaPublic\WEB-INF\web.xml)
and add the following section:

{{ <error-page>
<error-code>404</error-code>
<location>/admintemplates/404.jsp</location>
</error-page> }}

Now, create a 404.jsp file inside your \webapps\magnoliaPublic\admintemplates directory
that contains the following jsp code

{{
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String contextName = request.getContextPath();
String newLocn = contextName + "/index/404.html";
response.setHeader("Location",newLocn);
%>
}}

What will happen is that if a user requests a page that doesn't exist inside
your magnoliaPublic context then Tomcat will redirect the user to the
/admintemplates/404.jsp page which then redirects to your /index/404.html page.

Why must you do it this way?? Well, your web.xml has to point to a file that actually
exists somewhere in your webapps directory, not to a 'virtual' file in your Magnolia
repository. If you doubt this, try replacing /admintemplates/404.jsp with
/magnoliaPublic/index/404.html and see what happens. We point the web.xml to a 'real' file
and then have that real file perform a redirect to your magnolia generated 404.html file.

This method tested with 2.1-RC4 and 2.1.3


Valid for v21
Valid for v3

In its previous incarnation on JspWiki, this page was last edited on Mar 31, 2007 10:07:56 PM by Magnolia
Other known authors include :

  • RamonBuckland
  • RamonBuckland
  • 61.145.233.118
  • 212.163.159.14
  • Jgibbens
  • 155.97.16.124
  • BorisKraft
  • BorisKraft
  • No labels