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