Well then, not to overdo it, but you can use either this RewriteRule ^/(SEDO-NEW|SEDO|ABCD|XYZ)?)$ $1/index.jsp [R=301,L] (and keep on adding alternatives as need be) or this RewriteRule ^/(SEDO)$ $1/index.jsp [R=301,L] RewriteRule ^/(SEDO-NEW)$ $1/index.jsp [R=301,L] RewriteRule ^/(ABCD)$ $1/index.jsp [R=301,L] RewriteRule ^/(XYZ)$ $1/index.jsp [R=301,L] ... since each rule is marked "last", the first one to match "wins". It's a tiny bit less efficient, but maybe more readable and flexible. Bocalinda wrote:
Hi André. Yes, for now just those two applications are involved. However, it might be that new applications will be added. Thanks a bunch for the tip though! 2008/11/18 André Warnier <aw@xxxxxxxxxx>Hi. Now in your case, it was just the 2 URLs "/SEDO" and "/SEDO-NEW" that needed to be rewritten and cause a re-direct, no ? If so, you could use the following RewriteRule, which should not have these inconvenients : RewriteRule ^/(SEDO(-NEW)?)$ $1/index.jsp [R=301,L] Bocalinda wrote:Hey guys, There is one problem with this solution. RewriteRule ^/([^/]+)$ $1/ [R=301,L] http://172.18.0.1/SEDO/test.html will also be added a trailing slash. I changed the regular expression to NOT add a trailing slash if there is a dot in the string. RewriteRule ^/([^/\.]+)$ $1/ [R=301,L] Let's hope they won't be using directory names with dots in over here :) 2008/11/18 Bocalinda <bocalinda@xxxxxxxxx> Hi André and Dan,Thanks a lot, this solved my problem! Just one question Dan. Apache will (in the default configuration) redirect /SEDO to /SEDO/ (if 'SEDO' is a directory). If you're proxying back, Apache won't >know that obviously, but you can use a rewrite rule to simulate this: Sorry for my ignorance, but could you explain why that is obvious? I'm just getting started with the proxy stuff and now and then I still get confused. Thanks again, it's greatly appreciated! 2008/11/18 Dan Udey <dan@xxxxxxxxxxxxxxx> You could also, in order to keep the URLs pretty and SEO and whatnot, justadd an extra / on the end. Apache will (in the default configuration) redirect /SEDO to /SEDO/ (if 'SEDO' is a directory). If you're proxying back, Apache won't know that obviously, but you can use a rewrite rule to simulate this: RewriteRule ^/([^/]+)$ $1/ [R=301,L] So /<anything> will be redirected to /<anything>/ automatically, and then browsers will know to look for /<anything>/image.gif - in this case <anything> is any string without a slash anywhere in it If your URLs only have alphanumeric characters in them, you can pretty up the rule like so: RewriteRule /([a-zA-Z0-9]+)$ $1/ [R=301,L] Which is still not pretty, but is somewhat less ugly. Either way, it fixes the problem in question. On 17-Nov-08, at 3:36 PM, André Warnier wrote: André Warnier wrote:Bocalinda wrote:Yes, that would be /SEDO/index.jspOk, now a simple test :When, instead of requesting http://yourserversip/SEDO if you request in your browser http://yourserversip/SEDO/index.jsp then your relative image links are working, right ? (provided the images are really there) Now replying to my own previous post, because I want to go to bed andso you would not have to wait for the conclusion : My reasoning is that the browser does what it does, and what it does is right : if it sees the link <img src="image.gif"> in a page that it received when it requested http://server/SEDO the it will request http://server/image.gif for the image. So far, ok for the browser, but that does not resolve your problem. To resolve your problem, the browser must known that when it requested http://server/SEDO what it really got was http://server/SEDO/index.jsp so that it can interpret the link <img src="image.gif"> as the request URL http://server/SEDO/image.gif The way to tell the browser that, would be that when it requests http://server/SEDO it receives a response from the server saying "no no, that's not there, but it's here instead" : http://server/SEDO/index.jsp That is called a re-direct, or a 301/302 response. The browser, when it receives this, will (automatically and transparently) request again the resource, but this time as http://server/SEDO/index.jsp and following that, it will correctly interpret <img src="image.gif"> as http://server/SEDO/image.gif (or http://server/SEDO_NEW/image.gif as the case may be) which URLs will be proxied to Tomcat and thus properly load-balanced. CQFD So now, the trick consists in having your server, upon request of http://server/SEDO to send back a re-direct to http://server/SEDO/index.jsp and that is probably a matter for mod_rewrite, or maybe just a configuration directive in Apache. (See the Redirect* directives) Note : in the URL to "redirect to", make sure that you specify it with a leading "http://server", because otherwise Apache may get smart and do an internal re-direct, which would not be known by your browser, and thus defeat the above logic. Hope this helps, as they say. 2008/11/17 André Warnier <aw@xxxxxxxxxx>Bocalinda wrote:Hi André.I'm glad we managed to understand eachother :) Sorry, maybe I did not use the correct example before, but that is wrong. If you original request ishttp://172,18.0.1/SEDO and from there, your browser receives an html page (wherever it came from), and that html page contains a link <img href="image.gif">, then the browser will request http://172,18.0.1/SEDO/image.gif wait a minute.. maybe it won't. Because it would remove the "SEDO", for being the last path component, and replace it by "image.gif". Now I think I get it. The browser would have to know that it is not really getting "SEDO", but /SEDO/something. Hmmm. I guess that the only way to make this work (if you cannot change the <img> links in the pages), would be to force a re-direct to the real thing, when the browser requests "SEDO". That's what I tried before. But the thing is that I don't knowwhere to redirect to, because: a. I don't know whether image.gif belongs to SEDO or SEDO-NEW b. I don't want to hardcode a Tomcat URL, because that server could be down. What is the resource that the browser really obtains when it requests http://172,18.0.1/SEDO ?(this must be something on your Tomcats) The resource in the browser remains http://172.18.0.1/SEDO all thetime. While I see the following in my apache error logs: No such file or folder /htdocs/image.gif (More or less, I'm not behind that computer right now). I'm puzzled. I think it may have to do with ProxyPassReverse not being set properly. Wait. I repeat : What is the resource that the browser *really* obtains when itrequests http://172.18.0.1/SEDO ? (this must be something on your Tomcats) Let's forget for the time being about "image.gif". It is thestepbefore that, which interests me. When the browser requests "http://172.18.0.1/SEDO", it first gets an html page. That page is probably defined as being your "Welcome document" for that directory in Tomcat. What is that document ? Put another way, which equivalent URL could be used to get the same page from Tomcat ? (Maybe "index.jsp" or something ?) --------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx ---------------------------------------------------------------------The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx ---------------------------------------------------------------------The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx
--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx