Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Jetty/Howto/MovedContextHandler"
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= How to redirect or move a context = | = How to redirect or move a context = | ||
− | + | {{Jetty Redirect|http://www.eclipse.org/jetty/documentation/current/moved-context-handler.html}} | |
− | You can | + | You can use the [http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/handler/MovedContextHandler.html MovedContextHandler] 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, as with any other context, you can configure a list of virtual hosts, meaning that this context responds only to requests to one of the listed host names. | |
− | Here's an example. | + | Suppose you have a context deployed at /foo, but that now you want to deploy at the root context / instead. |
+ | * First you reconfigure and redeploy the context on Jetty. | ||
+ | * Next you need a way to redirect all the browsers who have bookmarked /foo to the new path. You 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. This is a permanent redirection, which also preserves pathinfo and query strings on the redirect:<br> | ||
<pre><?xml version="1.0" encoding="ISO-8859-1"?> | <pre><?xml version="1.0" encoding="ISO-8859-1"?> | ||
− | <!DOCTYPE Configure PUBLIC "-// | + | <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> |
− | <Configure class="org. | + | <Configure class="org.eclipse.jetty.server.handler.MovedContextHandler"> |
<Set name="contextPath">/foo</Set> | <Set name="contextPath">/foo</Set> | ||
<Set name="newContextURL">/</Set> | <Set name="newContextURL">/</Set> |
Latest revision as of 18:13, 24 April 2013
How to redirect or move a context
You can use the MovedContextHandler 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, as with any other context, you can configure a list of virtual hosts, meaning that this context responds only to requests to one of the listed host names.
Suppose you have a context deployed at /foo, but that now you want to deploy at the root context / instead.
- First you reconfigure and redeploy the context on Jetty.
- Next you need a way to redirect all the browsers who have bookmarked /foo to the new path. You 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. This is a permanent redirection, which also preserves pathinfo and query strings on the redirect:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/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"> <Item>209.235.245.73</Item> <Item>127.0.0.73</Item> <Item>acme.org</Item> <Item>www.acme.org</Item> <Item>server.acme.org</Item> </Array> </Set> </Configure>