I'm learning PHP on my computer with IIS7.5 as the web server and am having a problem completing a 301 redirect correctly.
The tutorials and forums all say to use the following:
Header('Location: ' . $url, true, 301);
OR
Header('Location: ' . $url);
In both cases, instead of actually redirecting, the browser (Chrome and Firefox) display this:
Object Moved
This document may be found here
Using the FireFox web developer toolbar, I retrieved the page headers, which were:
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.5, ASP.NET
Date: Mon, 21 Mar 2011 18:47:35 GMT
Content-Length: 123
301 Moved Permanently
Why is the page not redirecting? Displaying that page is kind of redundant and annoying for users.
I figured it out. The Location header must be an absolute path to auto-redirect. If it's a relative path it doesn't redirect.
I had a similar issue but the path was already absolute. I solved it by specifically sending a 301 header before the location. PHP is supposed to detect redirects and do this automatically but wasn't doing.
header("HTTP/1.1 301 Moved Permanently");
header("location:http://www.mysite.com/mypage.php");
I had this problem using PHP on IIS7 using absolute URL. Bugged me for a little while. Ensure that you put exit(); after your header('Location: https://domain.tld/resource'); the header doesn't stop execution, and the function will otherwise return somewhere giving maybe unexpected results.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With