I have a client who has a site that used to be entirely ssl. We are switching him to mostly non-ssl for the public site, aside from the contact pages and other forms. I attempted to do this via .htaccess, but ran into the situation I described here:
I decided to try another route, using 2 different plugins (wpssl and force-non-ssl) with one forcing redirects of specific pages to ssl and the other doing a sitewide forced redirect, aside from an exclusion list, to non-ssl. This works, but for one issue... the client has W3 Total Cache installed, which is an awesome plugin, but for some reason it is allowing the first instance of a non-cached ssl page to get redirected to non-ssl via 301, but then on subsequent requests for the same page it is instead serving a cached version via a 200 Ok, without even changing the ssl to non-ssl. I am pretty sure it should not be doing this. It is as if the protocol (http vs https) is not factored into the caching when determining whether or not it is a new page. Does anyone have any idea where I would hack the plugin to fix this if so?