I’m trying to prevent certain pages on my site from being accessed through HTTPS, and (for whatever reason) I want to do it through PHP and not through a .htaccess.
Here’s the code I’m using:
if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://mydomain.com");
}
But for some odd reason, I’m stuck in an infinite loop, and can’t get it to work. When I check the response headers in firebug, I see that the location header is set to https://mydomain.com instead of http://mydomain.com, which is causing the infinite loop.
EDIT: Accessing http://mydomain.com directly does work.
Also note: this works if I send’em to a different page, but not if I send them to the same page. So if I run the above code in mydomain.com/somePage.php, and then try accessing it through https://mydomain.com/somePage.php, it’ll properly redirect to (non-SSL-ed) homepage. Only when I redirect them to the same page with a different protocol does it ignore the protocol.
What am I doing wrong?
It turns out there was nothing wrong with my code. The server was just setup in a way that was messing with my headers. I’m using engineHosting.com, and I have to say: they were very helpful. After a lot of back & forth with them, here’s what they sent me: