RewriteEngine on RewriteRule /overview/(.*) /xyz/?action=overview;$1 RewriteRule /one/([0-9]+)/(.*) /xyz/?action=one;id=$1;$2 RewriteRule /two/([0-9]+)/(.*) /xyz/?action=two;id=$1;$2 RewriteRule /download/(.+)/(.*) /xyz/?action=download;file=$1;$2 #### package TransHandler; use warnings; use strict; use Apache::Constants qw(DECLINED); sub handler { my $r = shift; my $uri = $r->uri(); # ... shortened elsif ($uri =~ m|^/one/(\d+)/|) { $r->uri("/xyz/Handler.pm"); return DECLINED; } # ... shortened return DECLINED; } # handler #### $r->uri("/xyz/Handler.pm?action=one;id=$1"); #### Filename is not valid: ...... Handler.pm?action=one;id=20