A quick and easy solution is to implement a request filter in Tapestry and then 
add some checks for path errors that you are expecting. 

An example:
public class PagePathChecker implements RequestFilter {

        /**
         * The globals Tapestry service
         */
        private ApplicationGlobals globals_;

        public boolean service(Request request, Response response,
                        RequestHandler handler) throws IOException {

                String servletRoot = 
globals_.getServletContext().getContextPath();
                String path = correctPath(request.getPath());
                boolean pathFault = (path.equalsIgnoreCase(request.getPath())) 
? false
                                : true;

                // correction for known paths that produce 404 errors
                if (pathFault) {
                        response.sendRedirect(servletRoot + path);
                        return true;
                }

                return handler.service(request, response);
        }

        private String correctPath(String path) {
                if (path.equalsIgnoreCase("/index.jsp") || 
path.equalsIgnoreCase("/index.html")) {
                        return "/index";
                }
                return path;
        }
}

Of course you would need to test this.

cheers
Peter


----- Original Message -----
From: "Martin Strand" <[EMAIL PROTECTED]>
To: "Tapestry users" <users@tapestry.apache.org>
Sent: Tuesday, 21 October, 2008 12:10:34 AM GMT +02:00 Athens, Beirut, 
Bucharest, Istanbul
Subject: Re: T5 Handling invalid urls with redirects

We switched from PHP to Tapestry last year and I'm using a rewrite filter  
to redirect old urls to the new ones:

http://tuckey.org/urlrewrite/

Martin

On Mon, 20 Oct 2008 22:05:38 +0200, nillehammer  
<[EMAIL PROTECTED]> wrote:

> Hi List,
> Long time no see. I have finally got my application online and am facing
> two problems, I have not thought of before. Both of which are users or
> search bots (namely google) using wrong urls.
>
> 1.) I have got an index Page in the root which works fine, but my
> beloved users tend to type "index.jsp" or "index.html" instead of just
> index into the address bar of their browser. (Maybe it's because they're
> mainly Germans and therefore are hyper correct;-)) ) The dot being used
> Tapestry interprets those as components on the index page with ids "jsp"
> and "html" and shows my nicely crafted ExceptionReport. I'd rather have
> Tapestry send a redirect to the correct url. How can this be
> accomplished? I have thought of implementing components with names "jsp"
> and "html" and writing event handlers for them but that seems a bit odd
> to me.
>
> 2.) Before the migration to Tapestry the application was struts based.
> Therefore all the URLs within the application have changed. That would
> not be a problem, but google keeps the old URLs. I think the reason is
> that when a completely wrong URL is typed in Tapestry will directly
> response with the index page rather than redirecting to it. So the
> client-software never gets informed about the incorrectness. Also in
> this case I would like Tapestry to do a redirect. How can this be done?
>
> Your help will be apreciated. Yours nillehammer

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to