# Problems with 301 redirects

- Thread: https://externals.io/message/26316
- Original archive: https://news-web.php.net/php.internals/26316
- Started by ianevans@digitalhit.com on 2006-11-04T06:57:24+00:00
- Messages: 3
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #26316 — ianevans@digitalhit.com — 2006-11-04T06:57:24+00:00

URL: https://externals.io/message/26316#26316

Someone on the php-general list suggested I write here before submitting
this to bugs.php.net to see if it was a known issue.

Having a problem here trying to redirect some old pages. Running php 5.1.4
as fastcgi under lighttpd.

I've recently noticed using a server header check that my 301 redirects in
PHP are returning 302 instead.

I'm using the following code:

header("Status: 301 Moved Permanently");
header("Location: mynewurl");
 `exit()`;

The header checker is returning this:

#1 Server Response: oldurl
HTTP Status Code: HTTP/1.0 302 Found
Connection: close
X-Powered-By: PHP/5.1.4
Location: mynewurl

Any reason why we're getting a 302 instead of a 301? This is keeping the
pages in Google instead of removing them and using the new location.

As per suggestions on the general list I've tried the status line before
and after the location. I've used the HTTP version instead of the
"Status:" etc.

-- 
Ian Evans
Chairman & Executive Producer
DigitalHit.com



-- 
Ian Evans
Chairman & Executive Producer
DigitalHit.com



-- 
Ian Evans
Chairman & Executive Producer
DigitalHit.com

---

## #26317 — Unknown W. Brackets — 2006-11-04T07:45:39+00:00

URL: https://externals.io/message/26316#26317 · In reply to: #26316

Shouldn't you use...

header('HTTP/1.0 301 Moved Permanently');
header('Location: http://...');

That is what I've always used and it's worked for me.  Additionally, the 
method you have suggested does not work for me.

-[Unknown]

-------- Original Message --------

> Someone on the php-general list suggested I write here before submitting
> this to bugs.php.net to see if it was a known issue.
> 
> Having a problem here trying to redirect some old pages. Running php 5.1.4
> as fastcgi under lighttpd.
> 
> I've recently noticed using a server header check that my 301 redirects in
> PHP are returning 302 instead.
> 
> I'm using the following code:
> 
> header("Status: 301 Moved Permanently");
> header("Location: mynewurl");
> `exit()`;
> 
> The header checker is returning this:
> 
> #1 Server Response: oldurl
> HTTP Status Code: HTTP/1.0 302 Found
> Connection: close
> X-Powered-By: PHP/5.1.4
> Location: mynewurl
> 
> Any reason why we're getting a 302 instead of a 301? This is keeping the
> pages in Google instead of removing them and using the new location.
> 
> As per suggestions on the general list I've tried the status line before
> and after the location. I've used the HTTP version instead of the
> "Status:" etc.

---

## #26319 — Michael Wallner — 2006-11-04T09:49:45+00:00

URL: https://externals.io/message/26316#26319 · In reply to: #26316

ianevans@digitalhit.com wrote:

> I'm using the following code:
> 
> header("Status: 301 Moved Permanently");
> header("Location: mynewurl");
> `exit()`;

Never ever use a Status header.
Either set the third param to `header()` to the intended response status code
or use a "HTTP/1.1 301" header string.  See http://php.net/header

-- 
Michael
