jdMorgan - 1:54 pm on Aug 19, 2010 (gmt 0)
Even if most search engines do figure out your intent, these external redirects nevertheless appear to be unnecessary, slow the "user experience" by resulting in two client-server transactions per "user" request, and create double log entries (one redirect, one 200-OK) for each of those requests, which may inflate and affect the usefulness of your site's "stats."
A better approach would be to avoid these external redirects entirely by replacing them with additional internal-rewrite rules in your .htaccess file or --if you prefer doing things with PHP-- changing the PHP code to "include and then echo the proper page content" instead of redirecting the client.
In PHP, sending a "Location" header to the client results in a 302-Found redirect.
In PHP, Sending a "Location" header plus a server status of 301 gives a 301-Moved Permanently redirect.
In PHP, "including" a file and then sending that file's contents to the client is essentially equivalent to an internal rewrite (URL-to-internal-filepath translation) in .htaccess using mod_rewrite.
I agree that you should never allow the situation where you link to a URL that is always 301-redirected, while linking to a URL that is always 302-redirected is a bit more "forgiveable" in search engines' eyes (and many fairly-big sites do this). But really, you should never redirect the client unless the requested URL is actually wrong in some way -- and never link to a "wrong" URL from your own site, regardless of the redirect code returned.
I defer to Tedster's learned judgment on the "level of SEO harm" here, but unnecessary redirects certainly cannot be good for a site.