Jump to: navigation, search

Difference between revisions of "Jetty/Howto/MovedContextHandler"

< Jetty‎ | Howto
Line 13: Line 13:
&lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&gt;
&lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&gt;
&lt;Configure class="org.mortbay.jetty.handler.MovedContextHandler"&gt;
&lt;Configure class="org.eclipse.jetty.server.handler.MovedContextHandler"&gt;
   &lt;Set name="contextPath"&gt;/foo&lt;/Set&gt;
   &lt;Set name="contextPath"&gt;/foo&lt;/Set&gt;
   &lt;Set name="newContextURL"&gt;/&lt;/Set&gt;
   &lt;Set name="newContextURL"&gt;/&lt;/Set&gt;

Revision as of 07:52, 9 July 2010

How to redirect or move a context

The org.eclipse.jetty.server.handler.MovedContextHandler  may be used to relocate or redirect a context that has changed context path and/or virtual hosts.

You can configure it to permanently redirect the old url to the new url, in which case Jetty sends a Http Status code of 301 to the browser with the new url. Alternatively, you can make it non-permanent, in which case Jetty sends a 302 Http Status code along with the new url.

In addition, like any other context, you can configure a list of virtual hosts, meaning that this context will only respond to requests with to one of the listed host names.

Suppose we had a context that was deployed at /foo, but that now we would like to deploy at the root context / instead. First we would reconfigure and redeploy our context on Jetty, but then we'd like a way for all the browsers who have bookmarked  /foo to be told to go to the new path. We would create a new context xml file in $JETTY_HOME/contexts and configure the MovedContextHandler to do the redirection from /foo to /.

Here's an example. We've chosen to do a permanent redirection, and also preserving pathinfo and query strings on the redirect:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure class="org.eclipse.jetty.server.handler.MovedContextHandler">
  <Set name="contextPath">/foo</Set>
  <Set name="newContextURL">/</Set>
  <Set name="permanent">true</Set>
  <Set name="discardPathInfo">false</Set>
  <Set name="discardQuery">false</Set>

  <Set name="virtualHosts">
    <Array type="String">