You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wiki-changes@httpd.apache.org by Apache Wiki <wi...@apache.org> on 2008/12/31 03:59:21 UTC
[Httpd Wiki] Update of "RewriteMap" by RichBowen
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Httpd Wiki" for change notification.
The following page has been changed by RichBowen:
http://wiki.apache.org/httpd/RewriteMap
------------------------------------------------------------------------------
* RewriteMap prg:
* RewriteMap dbd: or fastdbd:
+ For a description of the syntax, see [http://httpd.apache.org/trunk/mod/mod_rewrite.html#rewritemap Apache manual]
+
+ == Problem: ==
+ We want to map
+ {{{
+ www.example.com --> /home/www/htdocs/hosts/www/
+ the hostname www may be omitted from now on
+ www.sub1.example.com --> /home/www/htdocs/hosts/sub1/
+ www.sub2.sub1.example.com --> /home/www/htdocs/hosts/sub1/sub2/
+ www.sub3.sub2.sub1.example.com --> /home/www/htdocs/hosts/sub1/sub2/sub3/
+ etc.
+ }}}
+ == Recipe: ==
+ {{{
+ RewriteEngine on
+ RewriteMap sub /physical/path/to/rwmap.pl
+ RewriteLock /var/lock/map.sub.lock
+ RewriteCond %{HTTP_HOST} ^(www\.)?([a-z.-]+)\.example\.com
+ RewriteRule ^/(.*) /home/www/htdocs/hosts/${sub:%2}$1 [L]
+ }}}
+ rwmap.pl:
+ {{{
+ #!/usr/bin/perl
+
+ $| = 1;
+
+ while(<STDIN>)
+ {
+ chomp($_);
+ my @lables = split(/\./);
+ @lables = reverse @lables;
+ foreach my $label (@lables) {
+ $path .= $label . "/";
+ }
+ print $path . "\n";
+ }
+ }}}
+