Free Tool
HTTP Redirect Checker
Test HTTP-to-HTTPS redirects, trace the full redirect chain, detect loops, and verify that permanent redirects use the correct status code for SEO equity and method preservation.
Sign in with Google or GitHub to run the scan. Your first scan is free — no credit card required.
ZeriFlow Data — 12,400+ sites analyzed
26% of HTTPS sites in ZeriFlow's scan corpus still allow HTTP connections without an automatic redirect. A further 34% use a temporary 302 redirect instead of a permanent 301 or 308 — costing SEO equity on every request.
HTTP Redirect Types Explained
Choosing the wrong redirect type loses SEO equity or breaks POST requests. Here is how each code behaves:
| Code | Name | Permanent? | Method preserved? | Use case |
|---|---|---|---|---|
301 | Moved Permanently | Yes | No (POST → GET) | Legacy HTTP→HTTPS |
302 | Found (Temporary) | No | No | Temporary redirects |
307 | Temporary Redirect | No | Yes | Temporary, preserves method |
308 | Permanent Redirect | Yes | Yes | HTTP→HTTPS (preferred) |
308 vs 301
Use 308 for HTTP→HTTPS. It is permanent (passes SEO equity) and preserves the HTTP method — POST requests do not get downgraded to GET. This matters for login forms or API calls submitted over HTTP before the redirect fires.
Redirect Chains and Their SEO Impact
A redirect chain is when URL A → URL B → URL C. Each additional hop:
Adds latency — typically 100–300ms per hop on an uncached connection
Dilutes PageRank passing — chains compound the equity loss
Can trigger 'redirect limit' errors in search crawlers, leaving pages unindexed
Common chain patterns to eliminate:
3 hops — should be 1
http://www.example.com
→ http://example.com
→ https://example.com ✓ finalCorrect — direct to canonical
http://www.example.com → https://example.com ✓ final
HSTS and Redirects Working Together
Once HSTS is set, browsers bypass the HTTP→HTTPS redirect entirely for return visitors — they go straight to HTTPS without making an HTTP request first. This eliminates the redirect overhead and closes the SSL-stripping window on repeat visits.
- 01
Set up the 308 redirect — for first-time visitors and search crawlers
- 02
Add the Strict-Transport-Security header — for repeat visitors, zero redirect overhead
- 03
Submit to the HSTS Preload list — browsers ship with your domain as HTTPS-only
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
How to Set Up Proper Redirects
Nginx
server {
listen 80;
server_name example.com www.example.com;
return 308 https://$host$request_uri;
}Apache
<VirtualHost *:80> ServerName example.com Redirect permanent / https://example.com/ </VirtualHost>
Next.js (next.config.js)
// next.config.js
module.exports = {
async redirects() {
return [
{
source: '/:path*',
has: [{ type: 'header', key: 'x-forwarded-proto', value: 'http' }],
destination: 'https://example.com/:path*',
permanent: true,
},
];
},
};Vercel (vercel.json)
{
"redirects": [
{
"source": "/(.*)",
"destination": "https://example.com/$1",
"permanent": true
}
]
}Frequently Asked Questions
What is the difference between a 301 and 308 redirect?
Both 301 and 308 are permanent redirects that pass full SEO equity to the destination URL. The difference is method handling: a 301 allows browsers and crawlers to change the HTTP method from POST to GET when following the redirect, while a 308 preserves the original method. For HTTP-to-HTTPS redirects, 308 is preferred because a login form submitted over HTTP should still be a POST when it arrives at the HTTPS endpoint — a 301 would convert it to a GET, dropping the form data.
Do redirects hurt SEO?
A single well-configured permanent redirect (301 or 308) passes virtually all ranking equity to the destination. What hurts SEO is redirect chains — multiple hops where A redirects to B which redirects to C. Each additional hop introduces latency, and Google's crawler may not follow chains beyond a certain depth, leaving some pages unindexed. Temporary redirects (302, 307) also do not pass equity, so using them for permanent moves is a ranking mistake.
Why does my site have a redirect loop?
Redirect loops occur when A redirects to B which redirects back to A — the browser eventually gives up and shows an ERR_TOO_MANY_REDIRECTS error. Common causes include misconfigured HTTPS redirects where Nginx redirects HTTP to HTTPS but a load balancer or proxy terminates SSL and passes HTTP internally, so Nginx sees an HTTP request and redirects again. Fix by detecting the X-Forwarded-Proto header and only redirecting when its value is 'http'.
How do I redirect HTTP to HTTPS in Nginx?
Add a server block that listens on port 80 and returns a 308 permanent redirect: server { listen 80; server_name example.com www.example.com; return 308 https://$host$request_uri; }. If you are behind a load balancer that terminates SSL, add: if ($http_x_forwarded_proto = 'http') { return 308 https://$host$request_uri; } inside your main server block instead. This avoids the redirect loop caused by the proxy stripping the HTTPS connection.
What is a redirect chain and how do I fix it?
A redirect chain is a sequence of multiple redirects before reaching the final URL — for example, http://www.example.com redirecting to http://example.com then to https://example.com instead of going directly to https://example.com in one hop. Fix chains by updating the first redirect to point directly to the canonical final URL. Audit all redirect rules in your web server config, CDN, and application layer — chains often accumulate when multiple teams add redirects over time without auditing the full path.