Hi Apache users/experts,
I am trying to achieve proxying using mod_rewrite. I am trying to do the
following mappings:
Let www.company.com/foo/bar remain as such
Let all special subdomains.company.com/foo/bar remain as such
Proxy www.client1.com/admin to http://admin.company.com/client1name
Proxy www.client1.com to http://clients.company.com/client1name
admin.company.com and clients.company.com are externally accessible on the
internet and for anyone accessing them using those URLs should still work
(backward compatible). This is the httpd.conf file that I have written.
1) Is this approach right? Would the following also achieve the
functionality achieved by ProxyPassReverse of mod_proxy?
# LoadModule directives for mod_rewrite, mod_proxy and mod_proxy_http
RewriteEngine on
UseCanonicalName off
RewriteMap lowercase int:tolower
RewriteMap clients txt:/path/to/vhost.map
# If it is the main company site, then no looking up required.
RewriteCond %{HTTP_HOST} ^(www)?\.company\.com [NC]
RewriteRule ^/(.*) http://www.company.com/$1 [L]
# Don't map any of the special company subdomains
RewriteCond %{HTTP_HOST} ^special\.company\.com [NC]
RewriteRule ^/(.*) http://special.company.com/$1 [L]
# Do the above for other subdomains that should not be touched
# Rules for mapping client admin sites of the form
# www.client1.com/admin/xyz to http://admin.company.com/clientname/xyz
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{REQUEST_URI} ^/admin/.*
RewriteCond ${lowercase:%{HTTP_HOST}} ^(.+)$
RewriteCond ${clients:%1} ^(.+)$
RewriteRule ^/admin/(.*)$ http://admin.company.com/%1/$1 [P,L]
# Rules for mapping client sites of the form
# www.client1.com/foo to http://clients.company.com/clientname/foo
RewriteCond %{HTTP_HOST} !^$
RewriteCond ${lowercase:%{HTTP_HOST}} ^(.+)$
RewriteCond ${clients:%1} ^(.+)$
RewriteRule ^/(.*)$ http://clients.company.com/%1/$1 [P,L]
# Rules so that older client URLs work
This is an auxiliary question: 2) How can I do this?
My vhost.map file is as follows:
www.client1.com client1name
www.client2.com client2name
# ...
www.clientN.com clientNname
Please let me know if this approach would work... if there are some caveats,
I'd like to know them as well.
Thanks in advance,
Sai