Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: ModPerl: ModPerl

Configuring mod-Perl to handle only some file types

 

 

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded


jniederberger at comcast

Aug 8, 2012, 11:13 AM

Post #1 of 5 (456 views)
Permalink
Configuring mod-Perl to handle only some file types

Hello,

I have a mod_perl program that is written to handle URL's that
name either a directory or *.html type files. All other types
I want Apache to just do its regular thing (e.g., serve image
type files, or .doc, .pdf, .js, .css, etc.)

What's a good way to configure that? So for an entire website
directory, and all its substructure, my perl handler gets only directories
or *.html files, and apache handles everything else without
involing my perl handler.

Thanks for any help or ideas.

Joe N


ekki at plicht

Aug 8, 2012, 11:23 AM

Post #2 of 5 (436 views)
Permalink
Re: Configuring mod-Perl to handle only some file types [In reply to]

On Wed, Aug 8, 2012 at 8:13 PM, <jniederberger [at] comcast> wrote:

> Hello,
>
> I have a mod_perl program that is written to handle URL's that
> name either a directory or *.html type files. All other types
> I want Apache to just do its regular thing (e.g., serve image
> type files, or .doc, .pdf, .js, .css, etc.)
> What's a good way to configure that? So for an entire website directory,
> and all its substructure, my perl handler gets only directories
> or *.html files, and apache handles everything else without
> involing my perl handler.
>
>
>
I just used a <FilesMatch> section in httpd.conf. Like so:
<FilesMatch "\.(tx|html\...)$">
SetHandler perl-script
PerlResponseHandler TxShow
</FilesMatch>

This match expression filters out any files that either end in .html.?? or
.tx.??, the two ?? being language extensions used for auto negotiation.

You can build nearly any kind of Regex there to filter out what you want
handled by your mod_perl script and what should be handled by Apache
directly.

Cheers,
Ekki


KMcGrail at PCCC

Aug 8, 2012, 11:28 AM

Post #3 of 5 (430 views)
Permalink
Re: Configuring mod-Perl to handle only some file types [In reply to]

On 8/8/2012 2:13 PM, jniederberger [at] comcast wrote:
> Hello,
>
> I have a mod_perl program that is written to handle URL's that
> name either a directory or *.html type files. All other types
> I want Apache to just do its regular thing (e.g., serve image
> type files, or .doc, .pdf, .js, .css, etc.)
> What's a good way to configure that? So for an entire website
> directory, and all its substructure, my perl handler gets only
> directories
> or *.html files, and apache handles everything else without
> involing my perl handler.
>
> Thanks for any help or ideas.
Hi Joe,

I used .cgim extension for this to reflect mod_perl

I don't have access to an example from a more recent server but this is
how I made .cgim's under one site work. It might help you.

<Directory /htdocs/example.org/html/>
<Files ~ "\.cgim$">
SetHandler perl-script
PerlHandler Apache::PerlRun
#PerlHandler Apache::Registry
Options +ExecCGI
PerlSendHeader On
PerlInitHandler Apache::StatINC
PerlSetVar StatINC_Debug 1
</Files>
</Directory>

regards,
KAM


jniederberger at comcast

Aug 8, 2012, 12:30 PM

Post #4 of 5 (426 views)
Permalink
Re: Configuring mod-Perl to handle only some file types [In reply to]

Thank you – both Kevin and Ekki

For my purposes I think Ekki’s idea sounds more like it could work.

Ekki – would you know how to phrase that match in the negative?
In other words, write a regex to match .jpeg, .doc, ....etc. etc.
and if those matches FAIL - then use perl handler?

Thanks again,
Joe N




From: Ekki Plicht (DF4OR)
Sent: Wednesday, August 08, 2012 2:23 PM
To: mod_perl list
Subject: Re: Configuring mod-Perl to handle only some file types




On Wed, Aug 8, 2012 at 8:13 PM, <jniederberger [at] comcast> wrote:

Hello,

I have a mod_perl program that is written to handle URL's that
name either a directory or *.html type files. All other types
I want Apache to just do its regular thing (e.g., serve image
type files, or .doc, .pdf, .js, .css, etc.)
What's a good way to configure that? So for an entire website directory, and all its substructure, my perl handler gets only directories
or *.html files, and apache handles everything else without
involing my perl handler.




I just used a <FilesMatch> section in httpd.conf. Like so:
<FilesMatch "\.(tx|html\...)$">
SetHandler perl-script
PerlResponseHandler TxShow
</FilesMatch>

This match expression filters out any files that either end in .html.?? or .tx.??, the two ?? being language extensions used for auto negotiation.

You can build nearly any kind of Regex there to filter out what you want handled by your mod_perl script and what should be handled by Apache directly.

Cheers,
Ekki


ekki at plicht

Aug 8, 2012, 12:48 PM

Post #5 of 5 (429 views)
Permalink
Re: Configuring mod-Perl to handle only some file types [In reply to]

On Wed, Aug 8, 2012 at 9:30 PM, <jniederberger [at] comcast> wrote:

> Thank you – both Kevin and Ekki
>
> For my purposes I think Ekki’s idea sounds more like it could work.
>
> Ekki – would you know how to phrase that match in the negative?
> In other words, write a regex to match .jpeg, .doc, ....etc. etc.
> and if those matches FAIL - then use perl handler?
>

Joe,
I don't think that that approach will work in the long term. What if
someone wants to serve a file *.xyz in the future? You would have to
adjust that regex. And again, and again...

I think it would be much easier to set up <DirectoryMatch 'regex'> and
<FilesMatch 'regex'> sections for what you want to serve by your
handler(s), and let Apache handle _all_ other files/dirs.

Filter on what is the smaller set - and I think that's your dirs and .html
files. All other files not mentioned in those <*Match ...> sections are
automatically handled by Apache. Further - a regex matching all those files
you don't want to handle yourself would be rather lengthy and unwieldy.

Take a look at Apaches fine documentation, look for <DirectoryMatch ...>
and <FilesMatch ...> directives.
http://httpd.apache.org/docs/2.2/mod/core.html#directorymatch
http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch

For example, a <FilesMatch ...> for . htm or .html Files would look like
(untested):

PerlRequire /var/www/mysite/cgi-bin/my_modperl_module.pm

<FilesMatch "\.html?$">
SetHandler perl-script
PerlResponseHandler my_modperl_module # which contains a sub
handler {...};
</FilesMatch>

Cheers,
Ekki




>
>
>
>
> *From:* Ekki Plicht (DF4OR) <ekki [at] plicht>
> *Sent:* Wednesday, August 08, 2012 2:23 PM
> *To:* mod_perl list <modperl [at] perl>
> *Subject:* Re: Configuring mod-Perl to handle only some file types
>
>
>
> On Wed, Aug 8, 2012 at 8:13 PM, <jniederberger [at] comcast> wrote:
>
>> Hello,
>>
>> I have a mod_perl program that is written to handle URL's that
>> name either a directory or *.html type files. All other types
>> I want Apache to just do its regular thing (e.g., serve image
>> type files, or .doc, .pdf, .js, .css, etc.)
>> What's a good way to configure that? So for an entire website directory,
>> and all its substructure, my perl handler gets only directories
>> or *.html files, and apache handles everything else without
>> involing my perl handler.
>>
>>
>>
> I just used a <FilesMatch> section in httpd.conf. Like so:
> <FilesMatch "\.(tx|html\...)$">
> SetHandler perl-script
> PerlResponseHandler TxShow
> </FilesMatch>
>
> This match expression filters out any files that either end in .html.?? or
> .tx.??, the two ?? being language extensions used for auto negotiation.
>
> You can build nearly any kind of Regex there to filter out what you want
> handled by your mod_perl script and what should be handled by Apache
> directly.
>
> Cheers,
> Ekki
>
>
>

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.