March 4, 2011 2 Comments

Apache and incomplete redirection messages

As part of moving my site around, I needed a bunch of redirects so that http://enc.com.au/docs/linuxload.html now becomes http://enc.com.au/2010/07/manually_calculating_process_times/ because its now controlled by WordPress. so I used the RedirectPermanent feature of mod_alias to do it with lines like:

RedirectPermanent /docs/linuxload.html /2010/07/manually_calculating_process_times/

So you come in on /docs/linuxload.html and redirect to the blog entry, simple really! It actually works, kinda, but the log files fill with things like:

[Fri Mar 04 14:40:17 2011] [warn] [client 172.16.242.1] incomplete redirection target of '/2010/07/manually_calculating_process_times/' for URI '/docs/linuxload.html' modified to 'http://enc.com.au/2010/07/manually_calculating_process_times/

What is going on? Why won’t Apache just be quiet and be happy? The reason is in the Redirect Directive documentation on the 2.0 mod_alias page:

Also, URL-path must be a fully qualified URL, not a relative path, even when used with .htaccess files or inside of sections.

But I’m running Apache 2.2 and the 2.2 mod_alias page says:

The new URL should be an absolute URL beginning with a scheme and hostname, but a URL-path beginning with a slash may also be used, in which case the scheme and hostname of the current server will be added.

That’s it, you two choices:

  • Use relative urls and have Apache complain
  • Use absolute urls and have a happy Apache

Changing the above config snippet to use absolute paths fixed it.

RedirectPermanent /docs/linuxload.html http://enc.com.au/2010/07/manually_calculating_process_times/
Identi.caLiveJournalStumbleUponDiggRedditSlashdotWordPressTechnorati FavoritesShare

Filed under: Software

Tags: ,