I'm replacing an exisiting PHP site with mod_perl and
Template-Toolkit.

I normally set up mod_perl to use a location like
this:

<Location /something>

and set the handler to my mod_perl module.

However, I need to map to "/" since I'm replacing a
system where there are existing PHP files like
www.someserver.com/index.php or
www.someserver.com/about.php.

I decided to do use

<Location />

to map to my main mod_perl script. 

The first thing it does is to check if the uri ends
with a .phtml extension (or www.someserver.com or
www.someserver.com/...same with subdirectories). If
there is, I continue processing, otherwise I decline
it and let Apache handle it. 

If I have a .phtml (or a directory index) I check if I
have a template. If I have a template TT takes over,
if not I return DECLINED and let Apache take over.

http.conf
---------
<Location />
    PerlSetVar websrc_root /usr/local/templates
    SetHandler  perl-script
    PerlHandler Test::MyModule
</Location>

Beginning of MyModule.pm
-------------------------
# Get the uri
my($uri, $uri2);
$uri = $uri2 = $r->uri;
$uri2 =~ s[^/][];  # remove the leading '/'

# We only want to see .phtml files, or urls that end
with '/'
# or where the stuff past the last '/' doesn't contain
any '.'s.
# We'll check the later two case for a template and
then
# decline it if no template is found.
unless ($uri =~ /\.phtml$/ or
        $uri =~ m!/$! or
        $uri =~ m!.*/[^\.]+$!) {
    return DECLINED;
}

Is this the best way to do this?

--
Thanks

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com

Reply via email to