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

Compare with Current View Page History

« Previous Version 5 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

When using magnolia 3.5.x

Now to make this work with magnolia v 3.5.x you need to define a bypass for a custom jsp page created above. Go to the configuration menu and create new contentNode under
server/filters/bypasses and call it 404 for this node create dataNode class and set it to info.magnolia.voting.voters.URIStartsWithVoter and dataNode pattern with value pointing to your 404.jsp (i.e. /admintemplates/404.jsp in the case of example above)

Warning

When configuring bypass all the values are applied immediately so it is saver to configure this node elsewhere in the tree and only when fully configured move it to its proper location (server/filters/bypasses)

Valid for v21

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
  • Jgibbens
  • BorisKraft
  • No labels