---
title: "How to detect page redirection in PHP · Appnovation"
url: "https://www.appnovation.com/insights/how-detect-page-redirection-php"
description: "A quick PHP routine to detect 3XX page redirections when consuming external content or migrating an old static website."
---

Article

# How to detect page redirection in PHP

[![](https://cdn.sanity.io/images/ey850001/production/36eb314260fb474cacc1b3a473d7e8402d997898-68x68.png?w=68&auto=format) Appno Blogger Appnovation Coop](/people/appno-blogger.md) Mar 23, 2010  
 2 min read 

![Appnovation Blog Default Header](https://cdn.sanity.io/images/ey850001/production/9efe1c26d9584ecfb3dfef5a63e698bf4567d305-1440x600.jpg?w=1400&auto=format) 

I was looking for a quick way to detect any 3XX redirections, therefore I came up with this small routine.

The web is getting more and more interweaved, and websites often need to consume other content. Or sometimes need to convert an older static website to Drupal using a parser. In both cases, we might need to implement some strategy regarding redirects, like for example placing a is\_redirect on the URL in a cron, and sending the result to watchdog

`// Detect redirect function is_redirect($url) { # 1. Prevent redirects $opts = array('http' => array('max_redirects'=>1, 'ignore_errors'=>1) ); stream_context_get_default($opts); # 2. Get headers (does not take context argument like file_get_contents) $headers = get_headers($url,true); # 3. Restore stream settings $opts = array('http' => array('max_redirects'=>20, 'ignore_errors'=>0) ); stream_context_get_default($opts); # 4. Extract http request status code $status = $headers[0]; list($protocol,$code,$message) = split(' ', $status,3); # 5. Detect redirect return ($code>=300 && $code<400); } // Find location of redirect function loc_redirect($url) { # 1. Prevent redirects $opts = array('http' => array('max_redirects'=>1,'ignore_errors'=>1) ); stream_context_get_default($opts); # 2. Get headers (does not take context argument like file_get_contents) $headers = get_headers($url,true); # 3. Restore stream settings $opts = array('http' => array('max_redirects'=>20,'ignore_errors'=>0) ); stream_context_get_default($opts); # 4. Extract http request status code $status = $headers[0]; list($protocol,$code,$message) = split(' ',$status,3); # 5. Find redirect return ($code>=300 && $code<400) ? $headers['Location'] : FALSE; }`

This is not the most advanced hint, but It might save some time to someone looking for a quick copy-paste solution!

[![](https://cdn.sanity.io/images/ey850001/production/36eb314260fb474cacc1b3a473d7e8402d997898-68x68.png?w=68&auto=format) Appno Blogger Appnovation Coop · Appnovation](/people/appno-blogger.md) 

## Keep reading

[![What is Sovereign AI](https://cdn.sanity.io/images/ey850001/production/a5889abdd5e80376912546622e046e3fbef234b4-2496x1664.png?w=640&auto=format)](/insights/what-is-open-source-sovereign-ai.md)

 Article · 7 min AI 

### [What Is Open Source, Sovereign AI?](/insights/what-is-open-source-sovereign-ai.md)

Every company is encouraging more AI, and almost every AI bill is climbing. Sovereign AI is about two kinds of control: over your data and over your costs. Here's why open source sits at its foundation.

[Iain MacNeil](/people/iain-macneil.md) Article 

[![AI-first experience design](https://cdn.sanity.io/images/ey850001/production/8bbc2418e87924ef10f36115478a2e10d5bed95e-1584x624.jpg?w=640&auto=format)](/insights/how-build-ai-first-experience-without-throwing-out-everything-youve-already-built.md)

 Article · 6 min AI Sep 10, 2026 

### [How to Build an AI-First Experience Without Throwing Out Everything You've Already Built](/insights/how-build-ai-first-experience-without-throwing-out-everything-youve-already-built.md)

Users now expect a direct answer, not a list of links to click through. Here's how organizations can layer an AI-First experience onto their existing website or app, in weeks rather than years.

[Andrew Douglas](/people/andrew-douglas.md) Article 

[![What Becomes Possible When AI Can Read All the Data](https://cdn.sanity.io/images/ey850001/production/c28ab0bd26753421ee42937e13adc7a7f19b47f0-1296x510.jpg?w=640&auto=format)](/insights/what-becomes-possible-when-ai-can-read-all-data.md)

 Article · 4 min AI Sep 09, 2026 

### [What Becomes Possible When AI Can Read All the Data](/insights/what-becomes-possible-when-ai-can-read-all-data.md)

Most of the world's data has never been analyzed, only sampled. AI changes that. How AI-ready data platforms unlock questions no one could ask before.

[Appnovation](/people/appnovation.md) Article 

## Get the thinking,  
*before everyone else.*

One considered email a month. New essays, field notes from live engagements, and the occasional strong opinion. No noise.
