On Thu, Dec 20, 2001 at 09:41:31PM +0100, Miroslav Madzarevic wrote:
>     The scenario:
> There are two folders
> /cgi-bin        with plain perl cgi
> /mod-perl       with Apache::Registry scripts
> 
> The application is being moved from cgi to mod_perl (Apache::Registry) one
> script at a time.
> My friend has a strange idea.
> He wants to mix cgi-bin & mod_perl by testing all of the scripts in
> cgi-bin and putting one cgi-script at a time into mod-perl folder.
> He wants to do this internaly in Apache, changing the request for
> a particular script so for example when you reference /cgi-bin/some_scr.pl
> you actually end with /mod-perl/some_scr.pl. He doesn't want to
> change the <a href> code from html files to stop pointing at /cgi-bin.
> By moving all of them one at a time all of the application will
> eventually end up working under mod_perl.
> 
> How can he do that ?
> 
> He thought of using mod_proxy or mod_rewrite.
> The scripts are badly written and have been developed for three years
> so far by various perl "programmers".

I'd use mod_rewrite or, even better, use the power of the
PerlTransHandler..  Activate the following handler by adding

  PerlTransHandler Moo::my_trans_handler

to your httpd.conf.  In your example it will check for

  /usr/local/apache/cgi-bin/some_scr.pl_mod_perl_me

If that file exists we rewrite the URL to use the /mod-perl prefix
internally.


sub Moo::my_trans_handler {
  my $r = shift;
  my $uri = $r->uri;

  return DECLINED unless ($uri =~ s,^/cgi-bin/,,);
  
  if (-f "/usr/local/apache/cgi-bin/${uri}_mod_perl_me") {
    $uri = = "/mod-perl/$uri
    $r->uri("/mod-perl/$uri");
  }
  return DECLINED;
}
  

-- 
Paul Lindner    [EMAIL PROTECTED]   ||||| | | | |  |  |  |   |   |

    mod_perl Developer's Cookbook   http://www.modperlcookbook.org
         Human Rights Declaration   http://www.unhchr.ch/udhr/index.htm

Reply via email to