With some URLs, WordPress is sending a reply of 301 redirect to exactly the same URL as was requested. On the second request it replies with 200 and the page, it doesn't get stuck in a constant redirect loop.
This is WordPress 3.2.1 with the 2011 theme and no plugins activated.
The original request that WP replies with a 301 redirect to looks like this:
The subsequent request that WP replies with 200 OK to looks like this:
Note the original request does not include an If-Modified-Since header. This problem is not with all URLs either, it seems to be that for some URLs the browser (Google Chrome) sends the If-Modified-Since header on the first request, and WP serves the page OK. On some other URLs though the browser doesn't send a If-Modified-Since header on the first request, and gets a 301 redirect.
I have no idea why the browser does not send a If-Modified-Since header with all requests, or if the absence of this header is related to WP replying with a 301 redirect.
To give an example of a URL that doesn't generate a 301:
And a url that does generate a 301:
I am pretty sure it is WordPress sending the 301 redirect and not the server as the reply includes the headers
X-Powered-By: PHP/5.3.4 X-Pingback: http://www.photosite.com/blog/xmlrpc.php
Anyone have any ideas on what's happening?