perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Torsten Foertsch <>
Subject Re: Mod Perl 2.0 HTTP Handlers
Date Sun, 02 Nov 2008 13:59:33 GMT
On Sun 02 Nov 2008, Puneet Lakhina wrote:
> One more question, is it possible for me to ensure that my module/or
> essenially mod_perl's processing of the URI translation happens
> before mod_rewrite or any other similar modules, and essentially
> mod_rewrite's rules work on the URI modified by me.

That order is defined by the 4th parameter to ap_hook_translate_name(). 

mod_rewrite calls it as:

ap_hook_translate_name(hook_uri2file, NULL, NULL, APR_HOOK_FIRST);

and mod_perl as:

ap_hook_trans(modperl_trans_handler, NULL, NULL, APR_HOOK_REALLY_FIRST);

APR_HOOK_FIRST and APR_HOOK_REALLY_FIRST are integer numbers. Hence, you 
can write APR_HOOK_REALLY_FIRST-42 or so.

The actual definitions can be found in 

/** run this hook first, before ANYTHING */
/** run this hook first */
#define APR_HOOK_FIRST		0
/** run this hook somewhere */
#define APR_HOOK_MIDDLE		10
/** run this hook after every other hook which is defined*/
#define APR_HOOK_LAST		20
/** run this hook last, after EVERYTHING */

So, a PerlTransHandler is always called before the mod_rewrite 
translation handler since APR_HOOK_REALLY_FIRST is less than 
APR_HOOK_FIRST. The only way to change that is to patch and recompile 
one of the modules.


Need professional mod_perl support?
Just hire me:

View raw message