sub handler { my $r = shift; my( $id, $step ) = (split( /\//, $r->path_info ))[1,2]; if( ! $step ) { $step = "step_one"; # Seems to have no bearing on $ENV{REQUEST_URI} my $ruri = $r->uri . "/" . $step; $r->uri( $ruri ); $r->subprocess_env( REQUEST_URI => $ruri ); $ENV{REQUEST_URI} = $ruri; # Modify path_info my $pinfo = $r->path_info . "/" . $step; $r->path_info( $pinfo ); $r->subprocess_env( PATH_INFO => $pinfo ); $ENV{PATH_INFO} = $pinfo; } ....