http://nagoya.apache.org/bugzilla/show_bug.cgi?id=89 *** shadow/89 Sun Feb 4 11:01:02 2001 --- shadow/89.tmp.2715 Sun Feb 4 11:01:02 2001 *************** *** 0 **** --- 1,151 ---- + +============================================================================+ + | URLs changed by mod_rewrite are not taken into account by AjpConnectionHan | + +----------------------------------------------------------------------------+ + | Bug #: 89 Product: Tomcat 3 | + | Status: UNCONFIRMED Version: 3.1 Final | + | Resolution: Platform: All | + | Severity: Normal OS/Version: All | + | Priority: High Component: Connectors | + +----------------------------------------------------------------------------+ + | Assigned To: [EMAIL PROTECTED] | + | Reported By: [EMAIL PROTECTED] | + | CC list: Cc: | + +----------------------------------------------------------------------------+ + | URL: | + +============================================================================+ + | DESCRIPTION | + Using apache1.3.12, tomcat3.1 + + mod_jserv + Tomcat do not deal properly with rewritten URIs. + With this mount point: + ApJServMount /wdlcontext ajpv12://localhost:8008/wdlcontext1.4.0 + this request: + /wdlcontext/wdlInstall?blabla + will fail because tomcat will only use the original URI passed by mod_jserv + instead of using the context set by mod_jserv. + + This is very problematic when using mod_rewrite. + + A patch-candidate for Ajp12ConnectionHandler.java is at the end. + Could somebody please review it? + + thanks. + + jpa + + + ==== debug message before the fix =========== + ==> /local/jakarta-tomcat/logs/tomcat.log <== + AJP: CP=wdlcontext1.4.0 + AJP: context=null + AJP: servlet=wdlInstall + AJP: serverName=dev.phoenixnet.com + AJP: PI=null + AJP: PT=null + AJP: QS=null + AJP: RA=134.122.3.102 + AJP: RH= + AJP: RU=null + AJP: AT=null + AJP: Meth=GET + AJP: URI: /wdlcontext/wdlInstall CP:wdlcontext1.4.0 LP: null + AJP: URI: /wdlcontext/wdlInstall CP:wdlcontext1.4.0 LP: null + AJP: serverName=jabgrall2 + AJP: Server jvmRoute=null + Request: /wdlcontext/wdlInstall + Query: null + ProcessRequest: R( /wdlcontext/wdlInstall) + + ==== debug message after the fix ============ + ==> /local/jakarta-tomcat/logs/tomcat.log <== + AJP: CP=wdlcontext1.4.0 + AJP: context=Ctx(/wdlcontext1.4.0,/local/ebetween/contexts/wdlcontext1.4.0) + AJP: servlet=wdlInstall + AJP: serverName=dev.phoenixnet.com + AJP: PI=null + AJP: PT=null + AJP: QS=null + AJP: RA=134.122.3.102 + AJP: RH= + AJP: RU=null + AJP: AT=null + AJP: Meth=GET + AJP: URI: /wdlcontext/wdlInstall CP:wdlcontext1.4.0 LP: null + AJP: URI: /wdlcontext/wdlInstall CP:wdlcontext1.4.0 LP: /wdlInstall + AJP: serverName=jabgrall2 + AJP: Server jvmRoute=null + Request: /wdlcontext/wdlInstall + Query: null + ProcessRequest: R( /wdlcontext1.4.0 + /wdlInstall) + After processing: R( /wdlcontext1.4.0 + /wdlInstall + null) + + + ======== PATCH FOR AJPV12 context lookup fix ========= + --- Ajp12ConnectionHandler.java Thu Apr 6 19:11:36 2000 + +++ Ajp12ConnectionHandler.java.fix Sat Aug 12 22:30:36 2000 + @@ -224,6 +224,16 @@ + + if( contextPath!= null ) + context=contextM.getContext( contextPath ); + + /* + + * XXX jpa:200008122227 + + * With this mount: + + * ApJServMount /wdlcontext1.4.0 + ajpv12://localhost:8008/wdlcontext1.4.0 + + * mod_jserv will return 'wdlcontext1.4.0' as the + mountpoint (=context) + + * instead of '/wdlcontext1.4.0' + + * So let's try to fix it by adding the + + */ + + if( context == null ) + + context=contextM.getContext( "/" + contextPath ); + if( doLog ) log("AJP: context=" + context ); + + servletName = ajpin.readString(null); //Servlet + @@ -264,10 +274,25 @@ + requestURI = ajpin.readString(""); //request + uri + if( doLog ) log("AJP: URI: " + requestURI + " CP:" + + contextPath + " LP: " + lookupPath); + + - // XXX don't set lookup path - problems with URL + rewriting. + - // need to be fixed. + - // if(contextPath!=null && contextPath.length() + >0 ) + - // lookupPath=requestURI.substring( + contextPath.length() + 1 ); + + /* + + * XXX jpa:200008122227 + + * With this rewrite rule: + + * RewriteRule ^(.*)/wdlzone/wdlInstall + $1/wdlcontext1.4.0/wdlInstall [PT] + + * and this mount point: + + * ApJServMount /wdlcontext1.4.0 + ajpv12://localhost:8008/wdlcontext1.4.0 + + * and this context + + * <Context path = "/wdlcontext1.4.0" docBase = ".... + + * and this request + + * /wdlzone/wdlInstall?blabla + + * The contextPath (after the above '/' fixup) is + '/wdlcontext1.4.0' + + * and the uri is '/wdlzone/wdlInstall' + + * the servlet name is 'wdlInstall' + + * So the lookupPath is is based on the position of the + servlet name. + + * Prior to the following fix, zones and contexts in + mounting points were + + * irrelevant. Only the original uri was then used by + tomcat. + + */ + + if(contextPath!=null && contextPath.length() >0 ) + + lookupPath=requestURI.substring( + requestURI.indexOf(servletName)-1 ); + if( doLog ) log("AJP: URI: " + requestURI + " CP:" + + contextPath + " LP: " + lookupPath); + + dummy = ajpin.readString(null); + //script filename + + + --------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]