Thanks for prompt advice Martin, however please explain more... I commented that code because I don't know how to construct the redirectUrl String from a PageProvider, inside RequestMapper.mapRequest? (Or alternatively, from PageClass + PageParameters)
Hoping you can shed light on this. Thanks in advance. Hendy On Wed, Dec 10, 2014, 20:12 Martin Grigorov-4 [via Apache Wicket] < ml-node+s1842946n4668717...@n4.nabble.com> wrote: > 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 <[hidden email] > <http:///user/SendEmail.jtp?type=node&node=4668717&i=0>> 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: [hidden email] > <http:///user/SendEmail.jtp?type=node&node=4668717&i=1> > > For additional commands, e-mail: [hidden email] > <http:///user/SendEmail.jtp?type=node&node=4668717&i=2> > > > > > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > > http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716p4668717.html > To unsubscribe from How to instruct RenderPageRequestHandler to redirect > using 301 Permanent, click here > <http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4668716&code=aGVuZHlAc29sdXZhcy5jb218NDY2ODcxNnwxNTI0Njc4NzUy> > . > NAML > <http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/How-to-instruct-RenderPageRequestHandler-to-redirect-using-301-Permanent-tp4668716p4668719.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