With Tomcat 5.0.22, Apache 2.0.49, and mod_jk 1.2.6-dev (i.e. CVS head as of 3/31/04): 1) Create a file (e.g. a text file) with a name containing a % character (e.g. foo%bar.txt). 2) Place it somewhere in the doc base of a web app. 3) Attempt to navigate to this document via a browser. You'll be able to see such files in directory listings, but not download them (you get 404's instead)! Note that the links for such files in the directory listings *do* have the % properly escaped as %25, but the request still does not work. Note that using Tomcat 4.1.24 instead of 5.0.22 produces the same result. Apache 2.0.49 has no such issues, though I believe some previous versions had issues in this area. I am not certain which component of the architecture is at fault here. I am actually more concerned with the overall treatment of % in path-info by mod_jk, Coyote, and Tomcat 4.1 and 5 than by the static file serving itself (which we use Apache for). I have servlets which do not get requests when their path-info contains % characters. I'll file a separate bug on this issue.
*** Bug 28351 has been marked as a duplicate of this bug. ***
You need to set either: JkOptions ForwardURICompatUnparsed or JkOptions ForwardURIEscaped to have mod_jk pass the encoded/escaped URI to Tomcat. With the default value: JkOptions ForwardURICompat mod_jk passes the decoded URI to Tomcat for backwards compatibility with earlier version of Tomcat.
Many thanks and sorry for the trouble. Is there a similar option for mod_jk2 that I'm also overlooking?
Okay, "JkOptions +ForwardURIEscaped" works great, but how do you accomplish the same thing with mod_jk2? My servlets get called with uri's with path-infos containing %'s when I use mod_jk and this option, but they don't get called with mod_jk2 and I can find no such setting noted in the mod_jk2 docs. Is this a gap in mod_jk2?