Blog tvlooy

Debugging rewrites on Apache 2.4

Apache 2.4, mod_rewrite, mod_alias | July 24, 2015

In Apache 2.4, the RewriteLog and RewriteLogLevel on mod_rewrite level are replaced by LogLevel on core level which you can configure for all modules. See the Apache documentation for detailed information:

Note that the Redirect directive is part mod_alias and not of mod_rewrite. So make sure you are looking for the right logging information. While mod_rewrite offers detailed logging of its actions at the trace1 to trace8 log levels, mod_alias unfortunately does not have this.

Enable logging for mod_rewrite and mod_alias:

LogLevel alert rewrite:trace3 alias:debug

mod_rewrite

For a redirect like this:

RewriteEngine On RewriteRule /foo /bar [R=301,L]

You will see logging information like this:

[Fri Jul 24 11:25:21.133477 2015] [rewrite:trace3] [pid 23422:tid 140451352831744] mod_rewrite.c(475): [client ?.?.?.?:53894] my.domain - admin [example.com/sid#7fbd695de898][rid#7fbd693d00a0/initial] [perdir /var/www/] add path info postfix: /var/www/bar -> /var/www/bar/ [Fri Jul 24 11:25:21.133558 2015] [rewrite:trace3] [pid 23422:tid 140451352831744] mod_rewrite.c(475): [client ?.?.?.?:53894] my.domain - admin [example.com/sid#7fbd695de898][rid#7fbd693d00a0/initial] [perdir /var/www/] strip per-dir prefix: /var/www/bar/ -> bar/ [Fri Jul 24 11:25:21.133569 2015] [rewrite:trace3] [pid 23422:tid 140451352831744] mod_rewrite.c(475): [client ?.?.?.?:53894] my.domain - admin [example.com/sid#7fbd695de898][rid#7fbd693d00a0/initial] [perdir /var/www/] applying pattern '/foo' to uri 'bar/' [Fri Jul 24 11:25:21.133576 2015] [rewrite:trace1] [pid 23422:tid 140451352831744] mod_rewrite.c(475): [client ?.?.?.?:53894] my.domain - admin example.com/sid#7fbd695de898][rid#7fbd693d00a0/initial] [perdir /var/www/] pass through /var/www/bar

mod_alias

If you try to do this with mod_alias, even if you enable logging at the highest level, you will see nothing in the logs. Only the usual debug info like for this rewrite:

Redirect 301 /foo /bar

You will see this information:

[Fri Jul 24 11:12:42.319023 2015] [alias:debug] [pid 19368:tid 140451394795264] mod_alias.c(500): [client ?.?.?.?:53731] AH00675: incomplete redirection target of '/bar/' for URI '/foo/' modified to 'http://example.com/bar/'

If the URL is corrected to the redirect below, you will see nothing in the logs. So, you will not be able to debug your redirects from mod_alias.

Redirect 301 /foo http://example.com/bar