I'm using the UrlRewriteFilter library in order to avoid having to write my own url filter.
I'm pretty sure that I have things set up properly, because when I have this in my url rewrite xml:
<rule> <from>^/urlIWantToMap</from> <to type="redirect">/WhereIWouldLikeItToGo</to> </rule>
It seems to work fine (as in, hitting http://localhost:8080/urlIWantToMap sends me to the intended location). Note that I had to add the servlet mapping to my web.xml.
If I try this though...
<rule> <from>^/urlIWantToMap</from> <run class="mypackage.MyServletClass" method="doGet"/> </rule>
I get an http 404. I think it is the same kind of problem described here (even though I'm suspicious on the solution/resolution the author comes to):
I can see this happening if there were some kind of change to web filter behavior that would inhibit UrlRewriteFilter from calling into the servlet. Either that; or I'm making a blatant mistake I'm not seeing.
preguntado el 28 de agosto de 11 a las 03:08
Do you see something like this when the application server starts?
INFO: org.tuckey.web.filters.urlrewrite.Run ERROR: could not find method with the name doGet on mypackage.MyServletClass
Even if you don't, does a público method doGet exist without any parameters? In my case it was protected, and while http://localhost:8080/MyProject/rewrite-status told me everthing was fine, I still got a 404.
I had to create a wrapper method to make doGet public and configure urlrewrite.xml like this:
<run class="my.wrappers.WrapperServlet" method="doGet(HttpServletRequest, HttpServletResponse)" />