HTTP not redirecting to HTTPS: send every visitor to the HTTPS address
If http://yourdomain.com loads your site instead of moving to https://, turn on your host's HTTPS redirect (on Cloudflare: SSL/TLS > Edge Certificates > Always Use HTTPS), then add HSTS so returning visitors go straight to HTTPS. Do the redirect in one place only, either at your CDN or at your host, to avoid redirect loops.
Why it matters
Visitors who type your domain, or click an old http:// link, land on the plain HTTP version. Browsers mark such pages with a Not secure label in the address bar, and anything sent on that page travels unencrypted. A redirect fixes the first visit; the HSTS header makes the browser use HTTPS on later visits without asking. MDN notes that browsers ignore HSTS sent over HTTP, so you need both.
Turn the redirect on
Cloudflare (proxied domains): Cloudflare's docs: Always Use HTTPS "redirects all your visitor requests from http to https" for all subdomains and hosts. Go to SSL/TLS > Overview, make sure the encryption mode isn't Off, then Edge Certificates and switch on Always Use HTTPS. Cloudflare advises against also "performing redirects at your origin web server", which can cause redirect loops.
Vercel: Vercel redirects HTTP to HTTPS itself; its guide notes that "Vercel's automatic HTTP-to-HTTPS redirect can't be disabled". If http:// still loads, something in front of Vercel (a proxy) is answering instead.
Netlify, Firebase Hosting, app builders: check the domain's status in the host's dashboard. Netlify says that when you add a custom domain it will "automatically provision a certificate with Let's Encrypt"; check the certificate's status in the domain's HTTPS settings, since HTTPS can't work until one is active.
Your own server (Nginx example):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
Test this on a preview deployment before relying on it.
If the redirect loops
ERR_TOO_MANY_REDIRECTS usually means two layers are redirecting against each other, typically Cloudflare in front of another host. Vercel's guide: "Cloudflare's Flexible SSL/TLS mode is one possible cause", because Cloudflare reaches the host over HTTP and the host redirects it back to HTTPS. The fix it gives is Cloudflare's Full (strict) mode, with a valid certificate on the host.
Confirm it
Run curl -sI http://yourdomain.com. The first line should be a 301, 302, 307 or 308 status, with a location: header that starts with https://.
What Pewterkit Check looks at
The check requests http:// plus your host name without following redirects. It's OK when the answer is a redirect to an https:// address, and a fix when plain HTTP answers without moving visitors to HTTPS. If plain HTTP doesn't answer at all, it reports that as information, since there's nothing to redirect.
FAQ
Is a 301 or 308 redirect better?
Both are permanent redirects. Use whatever your host sets; the important part is that the target is the https:// address.
Does forcing HTTPS fix mixed content warnings?
Cloudflare notes it doesn't: pages that load images or scripts from http:// addresses still need those links changed to https:// or relative paths.
Do I still need HSTS if I have the redirect?
Yes, they do different jobs. The redirect handles the first visit; HSTS tells the browser to skip plain HTTP next time.
Sources
- Always Use HTTPS (Cloudflare SSL/TLS docs) — read 27 Oct 2026
- Strict-Transport-Security header (MDN) — read 27 Oct 2026
- Resolve ERR_TOO_MANY_REDIRECTS when using a Cloudflare proxy with Vercel (Vercel) — read 27 Oct 2026
- HTTPS (SSL) (Netlify Docs) — read 27 Oct 2026
How this page was made: drafted with AI from the sources listed, reviewed by Pewterkit. Docs checked Oct 27, 2026. Spotted something out of date? Tell us.