Hi,

To do a "normal" redirect Wicket
uses javax.servlet.http.HttpServletResponse#sendRedirect() and this sets
302 as a code.
To have better control you should use RedirectRequestHandler, as in your
commented out code.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Dec 10, 2014 at 2:56 PM, Hendy Irawan <he...@soluvas.com> wrote:

> I currently have a custom SEO-friendly RequestMapper with the following
> snippet:
>
> @Override
> public final IRequestHandler mapRequest(Request request) {
>         try {
>                 final String userAgent = ((HttpServletRequest)
> request.getContainerRequest()).getHeader("User-Agent");
>                 final RedirectPolicy redirectPolicy = userAgent != null &&
> BotUtils.isBot(userAgent) ? RedirectPolicy.NEVER_REDIRECT :
> RedirectPolicy.AUTO_REDIRECT;
>
>                 final UrlInfo urlInfo = parseRequest(request);
>
>                 // check if the URL is long enough and starts with the
> proper segments
>                 if (urlInfo != null)
>                 {
>                         PageComponentInfo info =
> urlInfo.getPageComponentInfo();
>                         Class<? extends IRequestablePage> pageClass =
> urlInfo.getPageClass();
>                         PageParameters pageParameters =
> urlInfo.getPageParameters();
>
>                         if (info == null)
>                         {
>                                 // if there are is no page instance
> information
>                                 // then this is a simple bookmarkable URL
>                                 return processBookmarkable(pageClass,
> pageParameters, redirectPolicy);
>                         }
>                         else if (info.getPageInfo().getPageId() != null &&
> info.getComponentInfo() == null)
>                         {
>                                 // if there is page instance information
> in the URL but no component and
> listener
>                                 // interface then this is a hybrid URL -
> we need to try to reuse
> existing page
>                                 // instance
>                                 return processHybrid(info.getPageInfo(),
> pageClass, pageParameters,
> null);
>                         }
>                         else if (info.getComponentInfo() != null)
>                         {
>                                 // with both page instance and
> component+listener this is a listener
> interface URL
>                                 return processListener(info, pageClass,
> pageParameters);
>                         }
>                         else if (info.getPageInfo().getPageId() == null)
>                         {
>                                 return processBookmarkable(pageClass,
> pageParameters, redirectPolicy);
>                         }
>
>                 }
>                 return null;
>         } catch (MapperRedirectException e) {
>                 log.debug("Redirecting '{}' to canonical page: {}",
> request.getUrl(),
> e.getPageProvider());
> //                      return new RedirectRequestHandler(redirectUrl,
> 301);
>                 return new RenderPageRequestHandler(e.getPageProvider(),
> RedirectPolicy.ALWAYS_REDIRECT);
>         }
> }
>
> What it does is allow freeform root URI paths, e.g.
> http://www.tuneeca.com/t-1113012 instead of the longer
> http://www.tuneeca.com/product/t-1113012 .
>
> Now, requests to http://www.tuneeca.com/product/t-1113012 are also handled
> by the same RequestMapper and will be redirected to
> http://www.tuneeca.com/t-1113012 .
>
> However, currently it's using 302 temporary redirect. How to make it use
> 301
> permanent redirect?
>
> Thank you.
>
> Hendy
>
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to