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


Reply via email to