SEO Migration.

http to https migration seo

HTTP to HTTPS

The lowest-risk migration type on this list, and still routinely botched — almost always by leaving more than one host variant reachable and letting Google pick a canonical for you.

By Arsal Riaz, Technical SEO Consultant Published

Primary riskFour reachable host variants competing as duplicates, with the canonical decided by inference rather than by you.

Definition
An HTTP to HTTPS migration — An HTTP to HTTPS migration moves a site from unencrypted to encrypted delivery. URLs keep their paths, so mapping is trivial, but the protocol change creates duplicate host variants that must be consolidated to a single canonical. The technical risk sits in redirect configuration and mixed content, not in content or structure.

Why this one still goes wrong

An HTTPS migration is the simplest migration type by a wide margin. Paths do not change. Content does not change. Templates do not change. The mapping is http://x/path to https://x/path, which requires no judgment at all.

It still goes wrong often enough to be worth its own page, and almost always for the same reason: after the change, more than one version of the site is reachable, and nobody decided which one is canonical.

The four-variant problem

Every site has four possible host and protocol combinations. After an HTTPS migration, all four frequently remain reachable. Google then has to work out which is canonical, and it will make a decision whether or not you intended one.

The consequence is not dramatic. It is a slow dilution: links split across variants, crawl budget spent recrawling duplicates, and Search Console reporting split across properties so nobody can see the whole picture. It rarely produces a visible drop, which is precisely why it persists for years.

Pick one canonical host. Write it down. Make every other variant reach it in a single 301, and make every canonical tag, sitemap entry and internal link agree.

The chain that forms by accident

The most common configuration error is two rules that each do their job correctly and produce a two-hop chain together.

One rule upgrades HTTP to HTTPS. Another rule normalizes www to non-www. Run in sequence, http://www.example.com becomes https://www.example.com becomes https://example.com. Both rules are right. The result is a hop that did not need to exist, on every legacy inbound link to the site.

Googlebot follows up to ten hops, so nothing visibly breaks. But every hop costs crawl budget and adds real latency for users arriving from old links. The fix is to handle protocol and host normalization in one rule at the edge, then test all four variants individually.

Mixed content lives in the database

Template-level mixed content is easy to find and fix. The awkward part is content.

Editors paste absolute URLs into body copy. Over years, a site accumulates thousands of http:// image and link references inside database fields that no template change touches. They surface as blocked images on individual pages, discovered one at a time by users rather than all at once by a crawler.

Search the content database directly, not just the codebase. A find-and-replace across body fields is the only reliable fix, and it wants a backup taken first.

Where this sits

HTTPS migrations rarely happen alone anymore — they are usually bundled into a replatform or a domain change. When bundled, the protocol change is the least of the risks, but the four-variant check still needs running against the new host.

The technical scope page covers redirect architecture in more depth, and the full checklist puts these steps in sequence with the rest of the launch work.

How this migration type goes wrong

Two hops instead of one

What you see http://example.com redirects to http://www.example.com, which then redirects to https://www.example.com. Every legacy link takes two hops.

What fixes it Collapse protocol and host normalization into a single rule at the edge, so any variant reaches the canonical in one hop.

Mixed content blocks resources

What you see Browsers block scripts, stylesheets or images still requested over HTTP. Pages render broken or partially unstyled, and layout scores collapse.

What fixes it Rewrite hardcoded http:// asset references in templates, content and the database. Protocol-relative URLs are a workaround, not a fix.

Canonical tags still reference HTTP

What you see Pages serve over HTTPS while their canonical tag points at the HTTP version, telling Google the encrypted page is the duplicate.

What fixes it Generate canonicals from the request host and protocol rather than hardcoding them, then verify a sample in production after cutover.

HSTS applied before the site is fully ready

What you see A subdomain that has no valid certificate becomes unreachable, and the browser refuses to let users bypass it.

What fixes it Ship HSTS with a short max-age first, confirm every subdomain serves valid HTTPS, then raise it. Only add includeSubDomains once that is proven.

The four possible host and protocol combinations for a site, showing which is canonical and how the others must be handled.
Variant Correct behavior Hops allowed Common mistake
http://example.com 301 straight to the canonical HTTPS host1Redirects to http://www first, then to HTTPS — two hops
http://www.example.com 301 straight to the canonical HTTPS host1Chained through the HTTPS non-canonical variant
https://www.example.com 301 to canonical if non-www is canonical, otherwise serve1Both www and non-www serve 200 and compete as duplicates
https://example.com Serve 200 — this is the canonical in most setups0Canonical tag still pointing at the http:// version
The four host variants and where each must resolve

When this page applies

  • Some or all of the site is still served over HTTP.
  • Both www and non-www variants currently return 200.
  • You are adding HSTS or preparing for preload submission.

When it does not

  • The site is already fully HTTPS with one canonical host.
  • You are changing domain rather than protocol.
  • Only a certificate is being renewed or reissued.

HTTPS migration checks

Short list, run in order. Most HTTPS problems are configuration rather than strategy.

  1. 01

    Pick the canonical host and write it down

    www or non-www. Either is fine; the decision matters more than the answer. Every rule, canonical tag and sitemap entry afterwards refers back to this choice.

    Output Documented canonical host

  2. 02

    Collapse all four variants to one hop

    Test each of the four combinations individually and confirm each reaches the canonical in a single hop with a 301.

    Output Four-variant test results

  3. 03

    Find and fix mixed content

    Crawl for http:// references in templates, inline content and database fields. Content editors paste absolute HTTP URLs into body copy, and no template fix catches those.

    Output Mixed content exception list

  4. 04

    Regenerate canonicals and sitemaps on HTTPS

    Canonical tags, XML sitemaps, hreflang annotations and structured data URLs all need to reference the HTTPS canonical host.

    Output Updated canonicals and sitemaps

  5. 05

    Add HSTS in stages

    Start with a short max-age. Confirm every subdomain serves valid HTTPS before adding includeSubDomains, and only consider preload after that has been stable.

    Output HSTS header live with documented max-age

  6. 06

    Add the HTTPS property in Search Console

    HTTP and HTTPS are separate properties unless you use a domain property. Add the HTTPS version and submit the updated sitemap.

    Output Verified HTTPS property

Questions people ask before starting

Will moving to HTTPS hurt my rankings?

Not if it is done cleanly. Expect a short settling period of one to four weeks while Google recrawls and reassigns signals. Lasting damage comes from configuration errors — redirect chains, competing host variants, canonicals still pointing at HTTP — rather than from the protocol change.

Do I need to use the Change of Address tool for HTTPS?

No. Change of Address only applies to moves between different domains. A protocol change is handled entirely through redirects and canonical tags. Add the HTTPS property in Search Console and submit the updated sitemap instead.

What is mixed content and why does it matter?

Mixed content is an HTTPS page requesting resources over HTTP. Browsers block active mixed content such as scripts and stylesheets outright, so pages render broken. Beyond the security warning, a page missing its stylesheet fails Core Web Vitals and looks broken to users.

Should I enable HSTS preload?

Only once every subdomain reliably serves valid HTTPS, because preload is close to irreversible in practice — removal takes months to propagate through browser releases. Run a long max-age with includeSubDomains for a while before submitting.

Planning this move?

Send the launch date and what is changing. We will tell you which parts of this page apply to your situation and which do not.

Reply
Typically within one business day.
Hours
Monday to Friday, 9am–6pm US Eastern.
First call
Scoping, not a pitch. No deck.