Sorry for me not sipping, I'am in a hurry... Wayne Pascoe wrote:
On 13/5/02 3:24 pm, "Oliver Bleutgen" <myzope@gmx.net> wrote:
<VirtualHost *> RewriteEngine On RewriteCond %{HTTP_HOST} ^.*$ RewriteRule ^/(.*) http://127.0.0.1:8080/VirtualHostBase/http/%{HTTP_HOST}:80/$1 [L,P]
This won't work when a client includes the port in the host header, like Host: zaphod-content.mydomain.com:80. Some clients do that, wget for instance, and you'll get an extra ":80" in your request to zope.
Ah, ok. The reason I did this is that the original had RewriteCond %{HTTP_HOST}:80 ^.*$ and this only worked if I included the :80 in my browser line.
Well, you need to do both, in one way or other. If you want the flexibility of variable HTTP_HOSTs, you need to cope with the fact that HTTP_HOST may be sent with or without the port tacked at the end of the hostname. This can be done with two RewriteConds + different following RewriteRules, something like (untested, wrapped) RewriteCond &{HTTP_HOST} ^.*:80$ RewriteRule http://127.0.0.1:8080/VirtualHostBase/http/%{HTTP_HOST}/$1 [L,P] RewriteRule ^/(.*) http://127.0.0.1:8080/VirtualHostBase/http/%{HTTP_HOST}:80/$1 [L,P] You should really read up about mod_rewrite, because, reading it again, I have no idea what effect your RewriteCond line should have. Seems to me it matches always. Here it filters if HTTP_HOST has a trailing ":80" and rewrites accordingly. If there's no trailing ":80" the second RewriteRule comes into effect. Thinking about it, I had emailed the author about this thing and it seems he just didn't quite adapt his howto correctly to the host-header "problem". The 3 lines above should do the trick.
<IfModule mod_proxy.c> ProxyRequests On
Are you sure you want that? You now have open your server as a proxy for the whole world, if no other access rules are installed. You don't need that for what you describe here, see http://httpd.apache.org/docs/mod/mod_proxy.html#proxyrequests
My main reason for including that is that the zope document I read at http://www.zope.org/Members/Jace/apache-vhm said I should include those lines. I shall remove it. Thanks for the tip :)
Once, I tried to contact the authors of the various apache+zope howtos which did do that wrong, but didn't find always contacts. It would be nice if you could inform that guy about this problem.
Any ideas why the contents of zaphod-content.mydomain.com are not being served as / when I request it as zaphod-content.mydomain.com ?
Well, it seems that your rule doesn't match. I would enable logging for mod_rewrite (see docs for how to do that) and see what the rewrite
I have done this at a rewriteloglevel of 3 and I get the following output:
sd213.52.146.197 - - [13/May/2002:15:27:30 +0100] [zaphod-content.mydomain.com/sid#80dd578][rid#8134048/initial] (2) init rewrite engine with requested uri / 213.52.146.197 - - [13/May/2002:15:27:30 +0100] [zaphod-content.mydomain.com/sid#80dd578][rid#8134048/initial] (3) applying pattern '^/(.*)' to uri '/' 213.52.146.197 - - [13/May/2002:15:27:30 +0100] [zaphod-content.mydomain.com/sid#80dd578][rid#8134048/initial] (2) rewrite / -> http://127.0.0.1:8080/VirtualHostBase/http/zaphod-content.mydomain.com:80/ 213.52.146.197 - - [13/May/2002:15:27:30 +0100] [zaphod-content.mydomain.com/sid#80dd578][rid#8134048/initial] (2) forcing proxy-throughput with http://127.0.0.1:8080/VirtualHostBase/http/zaphod-content.mydomain.com:80/
This to me looks correct. The request is being translated to http://127.0.0.1:8080/VirtualHostBase/http/zaphod-content.mydomain.com:80/
Or is this not what it should be proxied to ?
Ahh, now I see. No it isn't the right thing to do. Darn, forget the rules I wrote above, but the concept still holds. You should rewrite to http://127.0.0.1:8080/zaphod-content.mydomain.comVirtualHostBase/http/zaphod... with a VHM in the folder zaphod-content.mydomain.com. This is, because you still have to get into the right folder in zope, that work isn't done by VHM. To do that with the flexibility of HTTP_HOST - so it would work with any A record of your domain just by creating a folder with the right name and a VHM in it - needs some work with the HTTP_HOST cause of the ":80-problem". But if you have one static host and filter the subdomains via other means (say apache name-based VirtualHosts), and you have just one hostname per virtual host, one line is enough: RewriteRule ^/(.*) http://localhost:40080/zaphod-content.mydomain.com/VirtualHostBase/http/zaph... For further needs, I recommend reading up about mod_rewrite on httpd.apache.org. cheers, oliver