httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sorin Manolache <sor...@gmail.com>
Subject Re: Change Request-Header before mod_rewrite
Date Mon, 04 Jun 2012 22:19:11 GMT
On 2012-06-04 22:53, Marc apocalypse17 wrote:
> Hi all,
>
> I just developed my first apache module following the tutorial on the apache website.
The module is responsible for adding one header value to the active request which must be
checked in a mod_rewrite ReWriteCondition.
> The problem is, that this value never reaches the mod_rewrite Rule. The Header just behaves
the same as the original request. Does anyone know why? What am I doing wrong?
>
> My module looks like this:
>
> static int helloworld_handler(request_rec* r){
>      if (!r->main) {
>          apr_table_setn(r->headers_in, "X-CUSTOM-HEADER", "1");
>      }
>      return DECLINED;
> }
>
> static void register_hooks(apr_pool_t* pool){
>      ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_FIRST);
> }
>
> module AP_MODULE_DECLARE_DATA helloworld_module = {
>      STANDARD20_MODULE_STUFF,
>      NULL,
>      NULL,
>      NULL,
>      NULL,
>      example_directives,
>      register_hooks
> };
>
> The .htacces file looks like this:
>
> RewriteEngine on
> RewriteCond %{HTTP:X-CUSTOM-HEADER} 1 [NC]
> RewriteRule from.html to.html
>
> The Rewrite-Rule is never executes fine. It always show the content of from.html.

A server-wide RewriteRule is executed in the translate_name hook.

A directory-wide RewriteRule is executed in the fixups hook.

So you'll have to place a callback on the translate_name or on the 
fixups hook and make sure your callback is executed before mod_rewrite's.

You could also try to set the header using the RequestHeader directive 
of the mod_headers module. Use the option "early". 
http://httpd.apache.org/docs/2.2/mod/mod_headers.html#requestheader

--
Sorin


>
>
> Thank you in advance,
> Marc
>


Mime
View raw message