A while ago, sparkfun.com changed their URL structure from
/commerce/product_info.php?products_id=9266
to
/products/9266
This is nice, right? We don't need to know that it is (or was) a PHP page, and commerce, product_info, and products_id all tell us that we're looking at some products. The latter form seems like a great improvement.
However, the change would have broken existing links. So, nicely, they stuck in 302 redirects. Visit http://www.sparkfun.com/commerce/product_info.php?products_id=9266 and your browser will issue
GET /commerce/product_info.php?products_id=9266 HTTP/1.1
to which Sparkfun's servers reply
HTTP/1.1 302 Found
Location: http://www.sparkfun.com/products/9266
This 302 redirect is caught by Stack Exchange's link validator as a broken link. It's not broken it works just fine. Here, try it: http://www.sparkfun.com/commerce/product_info.php?products_id=9266
I understand that a 302 redirect is intended to be a temporary redirect, while a 301 should be used for permanent changes per RFC 2616. That said, Wikipedia and common practice use it as a redirect.
Who is in error in this situation? Is this an error in Sparkfun's redirect implementation or in Stack Exchange's URL validator?