There is no perfect area to post this in, since it's a historical question, but I'm hoping it may result in something getting fixed (or at least an explanation) so I'm putting it here. Mods, feel free to move as required :)
My name is Ian McAnerin, and I'm a professional SEO. I'm currently writing a book on international SEO and am researching the chapter on redirects, which brings me to this post.
The general consensus among search engines and SEO's is that you should avoid 302 redirects whenever possible, unless you truly mean to "temporarily" redirect something, which on the web isn't very common. Normally, you just want to say "nope, that's not here anymore, it's over there", which is a 301.
The problem is that both IIS and Apache default to a 302 whenever someone does a redirect. You have to know what you are doing to go the extra step and specifically state that you want a 301 or Permanent redirect, which, since that's probably what you want to do most of the time, seems contrary to principles of usability. This has resulted in a huge number of websites loosing rankings, getting hijacked (ala the infamous "Google Hijack") and generally causing havoc among website owners who tell their ISP's to redirect so-and-so, resulting in the tech typing in "redirect x to y" and therefore resulting in a 302 and all sorts of issues.
My question is WHY? Is there actually a historic or programming reason why both Apache and IIS default to a 302 for redirects? Was it considered to be a good idea at one time? Was MS just copying Apache without thinking about it? I'd really like to know, since the current consensus in the search community about the programmers of these servers and their techs/admins is somewhat less than kind about this issue. I'd love to present the other side of the story, if there is one.
If there isn't a good reason, then please take this as a request for when someone asks for a redirect, that they actually get a permanent redirect, unless they state they only want one for a little while (i.e. default to a 301 rather than a 302).
Thanks
Ian