Redirects, Caches and Final URLs: The Hidden Mechanics Behind a Simple URL Change
A redirect looks simple from the outside. You request one URL and end up on another. In a browser, that can happen so quickly that nobody notices. In an audit, though, redirects are one of the most important things to inspect carefully because every hop is a decision.
A redirect says: "Do not use this URL directly. Go somewhere else." That instruction might be temporary, permanent, method-preserving, cached, chained, looped, blocked, rewritten by a CDN, created by an application framework or inherited from an old migration rule nobody remembers.
For users, a redirect can be the difference between landing on the right page and hitting a broken journey. For SEO, redirects affect migration quality, canonical consistency, crawl efficiency and reporting clarity. For developers, redirects often reveal hidden routing rules, legacy configuration and environment mismatches.
This article explains how redirects actually work, why 301, 302, 307 and 308 are not interchangeable, why final URLs matter more than first responses, and how to audit redirect behaviour with the mindset of someone who has seen real migrations go wrong.
For a practical step-by-step guide, see How to Check Redirect Chains and Final URLs. For migration-specific workflows, see How to Audit Redirects During a Website Migration.
A redirect is a response, not a route map
A redirect starts as an HTTP response. The server receives a request and replies with a 3xx status code plus a Location header that points to another URI.
A simplified example looks like this:
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page
The client then decides whether to follow that Location value. Browsers usually do. URL checking tools usually do if redirect following is enabled and the redirect limit has not been reached. APIs, command-line clients and crawlers may behave according to their own settings.
That distinction matters. The server does not teleport the user. It tells the client where to go next. The client follows, records or rejects that instruction.
The four redirects people confuse most
The common redirect codes are 301, 302, 307 and 308.
301 Moved Permanently
A 301 says the resource has been assigned a new permanent URI. It is the classic migration redirect. It is commonly used for old-to-new URL mapping, HTTP to HTTPS moves, canonical host changes and cleanup of legacy URLs.
In audits, a 301 should make you ask:
-
Is the final destination correct?
-
Is this permanent move expected?
-
Does the chain end in a successful final URL?
-
Could internal links and sitemaps be updated to point directly at the final URL?
302 Found
A 302 is usually treated as temporary. It is often used for short-term routing, campaigns, geolocation, A/B tests, login flows or application behaviour.
In migrations, unexpected 302 responses deserve review. They may be harmless, but they may also indicate that permanent redirect rules were not implemented correctly.
307 Temporary Redirect
A 307 is temporary like 302, but it is stricter about preserving the original request method and body. This matters more for non-GET requests such as POST, PUT or DELETE.
For normal URL audit lists, most checks are GET-style page requests, but the distinction still matters for APIs, forms and application routes.
308 Permanent Redirect
A 308 is the permanent version of 307. It communicates a permanent move while preserving the method and body. It was added later than 301 and is now part of the modern HTTP semantics specification.
For website migrations, 301 remains more common, but 308 is valid and often appears in modern frameworks, HTTPS enforcement, API moves and strict redirect configurations.
Why 301 and 302 have historical baggage
The web has a long memory. Some redirect behaviour exists because browsers and servers evolved together in messy ways.
Historically, user agents often changed POST requests to GET after 301 or 302 redirects. That behaviour became widely depended on, even though it created ambiguity. The later 307 and 308 status codes were introduced to remove that ambiguity when preserving the original method matters.
For normal SEO URL audits, this may sound academic because you are usually checking URLs with GET requests. It is still worth understanding because it explains why different redirect codes exist and why APIs should be more careful than marketing pages.
If you are checking application endpoints, payment flows, forms or API routes, do not treat all redirects as the same. Method preservation can be the difference between a safe redirect and broken behaviour.
Final URL is the result that matters
The first redirect code tells you how the chain began. The final URL tells you where the user, crawler or client ended up.
During audits, the final URL is often the most important field.
A redirect can begin correctly and still end badly:
301 > 301 > 404
The first 301 does not save the journey. The final response is broken.
A redirect can end successfully but still be wrong:
301 > 200
That looks clean until you realise the final URL is the homepage instead of the relevant replacement page.
A redirect can appear temporary but be part of a larger canonical flow:
302 > 301 > 200
That might be intentional for login, language, device or geolocation logic. It might also be an accidental rule conflict.
Never judge redirects by the first status code alone. Always read the final URL, final status and redirect chain.
Chains are usually archaeology
Redirect chains often tell the history of a website.
You might see:
http://old.example.com/page
301 to https://old.example.com/page
301 to https://www.old.example.com/page
301 to https://www.example.com/page
200
Each hop may have made sense when it was created. One rule forced HTTPS. Another standardised www. Another moved the domain. Another fixed trailing slashes. Over time, these rules stack up.
In a small site, this is untidy. In a large migration, it can become a serious QA problem. Long chains add latency, complicate debugging and make it harder to understand what is intentional.
A clean redirect plan usually aims to redirect old URLs as directly as possible to their final destination.
Caches make permanent redirects sticky
Permanent redirects can be cached by clients and intermediaries. That is part of their usefulness, but it can also make mistakes painful.
If a browser or cache stores a permanent redirect, you may continue to see old redirect behaviour even after the server configuration has changed. CDNs, reverse proxies and shared caches can introduce their own layers too.
This is why redirect QA should include:
-
Fresh checks from a dedicated tool.
-
Cache header review where relevant.
-
Awareness of CDN behaviour.
-
Testing from a clean environment.
-
Rescans after cache invalidation.
A redirect can be fixed on the origin server and still appear wrong through a cache. A good audit separates origin behaviour, CDN behaviour and client cache behaviour where possible.
Relative Location values are normal
The Location header does not always contain a full absolute URL. It can be relative.
For example:
Location: /new-page
A client resolves that relative reference against the current request URL. Good scanners handle this. During manual debugging, relative redirects can be easy to misread because the missing scheme and host are implied.
Relative Location values are not automatically wrong. They are common. What matters is the resolved final destination.
Loops are configuration mistakes with a simple symptom
A redirect loop happens when the chain never reaches a final response.
Examples:
A > B > A
A > A
HTTP > HTTPS > HTTP > HTTPS
Loops often happen when multiple systems think they own canonicalisation. A CDN redirects to HTTPS, the origin redirects back to HTTP. A framework adds a trailing slash, a proxy removes it. A language redirect sends users to a path that triggers the original rule again.
A loop is not just an SEO issue. It is a broken request path. Users, crawlers and monitoring tools cannot reach the final content.
Excessive redirects are not always loops
Too many redirects means the chain exceeded the configured limit before reaching a final response. It may be a loop, but it can also be an extremely long chain.
For example:
301 > 301 > 301 > 302 > 301 > 200
If your tool stops at five redirects and the sixth would have reached 200, the result may be reported as too many redirects. That does not mean the content is unreachable in every client. It means the redirect path exceeded the audit limit.
In practice, excessive chains should be cleaned up. They are fragile and slow, and they make migrations harder to verify.
Redirects and canonical signals
Redirects and canonical tags are related, but they are not the same.
A redirect changes the requested URL before the content is returned. A canonical tag is a signal inside the returned content that says which URL should be considered preferred.
Bad combinations include:
-
URL redirects to Page B, but Page B canonicalises to Page C.
-
XML sitemap lists URL A, which redirects to URL B.
-
URL A returns
200, but canonicalises to a redirected URL. -
URL A redirects to Page B, which is noindex.
-
Old URLs redirect to pages with irrelevant canonicals.
These are the kinds of issues that status-only checks miss. In URL Verifier Pro, review redirect chains alongside canonical URLs, robots directives and noindex flags.
For canonical workflows, see How to Check Canonical Tags in Bulk.
Redirects and sitemaps
XML sitemaps should usually list final canonical URLs, not redirecting URLs. If a sitemap is full of 301 responses, it may still work, but it is sending mixed signals. The sitemap says "these URLs are important", while the server says "use these other URLs instead".
During sitemap audits, filter sitemap URLs that redirect. Then ask:
-
Should the sitemap list the final URL instead?
-
Is the redirect expected after a migration?
-
Is the final URL canonical and indexable?
-
Does the final URL return
200? -
Is the redirect path direct?
For sitemap workflows, see How to Find Broken URLs From an XML Sitemap.
Redirects and response time
Every redirect adds another request and response cycle. On a fast connection, one extra hop may be barely noticeable. Across thousands of URLs, across mobile networks, across CDNs and origin servers, the cost becomes more visible.
During audits, sort by redirect count and response time together. Slow URLs with long redirect chains often reveal old rules, geographic routing, mixed protocol transitions, or overloaded application routing.
A redirect chain is not only an SEO signal. It is also a performance clue.
For more on this, read How to Find Slow URLs Using Response Time Checks.
Why browsers can hide redirect issues
Browsers are designed to get users to content, not to explain every network decision. They follow redirects automatically, use caches, store HSTS state, carry cookies, run JavaScript and sometimes hide the chain unless you open developer tools.
A URL checker records the chain because the chain is the audit data.
This difference is important. A user may say "the URL works". That can be true. The audit may still show that the URL works only after three unnecessary hops and ends on a non-canonical page. Both statements can be true.
How to audit redirects like a professional
A professional redirect audit is not just a list of 3xx rows.
A strong process looks like this:
-
Start with the most authoritative old URL list you can get.
-
Include URLs from sitemaps, analytics, backlinks, CMS exports and redirect maps.
-
Scan the list with a realistic redirect limit.
-
Filter failed rows and errors first.
-
Filter redirecting rows.
-
Sort by redirect count.
-
Review final URLs against the expected destination.
-
Tag wrong destinations, chains, loops and temporary redirects.
-
Add notes for the expected target where known.
-
Export separate reports for developers, SEO review and client sign-off.
-
Rescan only the fixed or tagged rows after changes.
-
Keep before and after evidence in saved sessions.
That process turns redirects from a vague "migration check" into a documented QA workflow.
What to include in a redirect report
A useful redirect report should include:
-
Original URL.
-
First status code.
-
Final URL.
-
Final status code.
-
Redirect count.
-
Redirect chain.
-
Location header where useful.
-
Response time.
-
Error details.
-
Notes.
-
Tags.
For developers, include enough detail to reproduce the issue. For clients, include enough detail to understand the impact. Do not send every possible column if it hides the important parts.
Common redirect report categories
Useful categories include:
-
Missing redirects.
-
Redirects to homepage.
-
Redirect chains.
-
Redirect loops.
-
Temporary redirects.
-
Redirects ending in
404. -
Redirects ending in
5xx. -
Redirects to old domain.
-
Redirects to staging domain.
-
Sitemap URLs that redirect.
-
Canonicals pointing to redirecting URLs.
These categories make the report more actionable than one long list of status codes.
How URL Verifier Pro fits
URL Verifier Pro is built for this kind of redirect work. It follows redirects up to your configured limit, records final URLs, redirect counts and redirect chains, and lets you filter, tag, note, save and export the rows that need attention.
That makes it useful as a bulk redirect checker for migrations, site launches, HTTPS moves, domain changes, CMS rebuilds and routine technical audits.
The important point is not just that it follows redirects. The important point is that it gives you a workflow around the redirect data. You can organise the findings, save the audit, rescan affected rows and export a clean report.
Final thought
Redirects are one of the places where the web looks simpler than it is. A browser hides the journey. A good audit reveals it.
If you only check whether the final page loads, you can miss chains, loops, temporary rules, wrong destinations, cache issues, noindex destinations and sitemap conflicts. If you inspect the full redirect path, you get a much clearer picture of how the site actually moves users and crawlers from old URLs to new ones.
That is why redirect auditing remains one of the most valuable checks in technical SEO and website QA.

