Guides /Security
Security

HTTP to HTTPS Migration: Complete Checklist for a Safe Switch

August 1, 20257 min readHostBible Team

Switching an established WordPress site from HTTP to HTTPS is straightforward when done in the right order. Done in the wrong order, you get redirect loops, broken mixed content warnings, or a site that half-loads on some pages. Here's the correct sequence, with verification steps at each stage so you know whether to proceed or stop and fix before moving on.

Before you start: take a backup

This migration touches WordPress settings, the database, and server configuration files. Any of these changes can go wrong, particularly the database search-replace step. Take a full backup of files and database before you begin. In UpdraftPlus, click "Backup Now." In cPanel, use the Backup Wizard. Label the backup clearly as pre-HTTPS-migration. This takes five minutes and means you can restore to a known-working state if anything breaks during the process.

Step 1: Install and verify the SSL certificate

Before making any WordPress changes, install an SSL certificate on your hosting account and verify it works. In cPanel, go to Security > SSL/TLS Status or Let's Encrypt SSL. Install a certificate covering both your root domain and the www subdomain (both yourdomain.com and www.yourdomain.com).

Once installed, open your browser and visit https://yourdomain.com directly. You should see a padlock icon with no security warning. Click the padlock and verify the certificate is valid, covers your domain, and isn't expiring soon. If there's a warning, "Your connection is not private," certificate mismatch, or expired certificate, the installation has a problem. Do not proceed until this is resolved. Every subsequent step assumes a valid, working certificate.

Also test https://www.yourdomain.com (with www). Both versions should load with a valid certificate. If www isn't covered, add it to the certificate before proceeding.

Step 2: Update WordPress URL settings

Log into wp-admin (still via HTTP for now) and go to Settings > General. Change both "WordPress Address (URL)" and "Site Address (URL)" from http:// to https://. Save changes. WordPress will log you out and redirect you to the HTTPS login page. Log back in.

Critical: do this step before adding any server-level redirect from HTTP to HTTPS. If you add the .htaccess redirect first, it redirects all HTTP requests to HTTPS, but WordPress is still generating HTTP URLs internally. The result is redirect loops or pages that load HTTPS in the browser bar but have HTTP assets. Always update WordPress settings first, server redirect second.

After saving, verify wp-admin loads correctly at the HTTPS URL. Check that the WordPress Address and Site Address in Settings > General now correctly show https://.

Step 3: Update hardcoded HTTP URLs in the database

The WordPress settings change tells WordPress to generate new HTTPS URLs going forward, but existing content in the database, posts, pages, widget content, theme customiser settings, still contains the old HTTP URLs. These need to be updated with a database search-replace.

Install the Better Search Replace plugin (free). Go to Tools > Better Search Replace. In the "Search for" field enter http://yourdomain.com. In "Replace with" enter https://yourdomain.com. Select all tables. Check "Run as dry run?" first and click "Run Search/Replace." Review the count of items that would be replaced, a very high number warrants investigation before running for real. Uncheck "Run as dry run?" and run again to execute the replacements.

If your site has a www version with distinct content, also run the same replace for http://www.yourdomain.com to https://www.yourdomain.com. After running, delete the Better Search Replace plugin, it's not needed ongoing and adds unnecessary database access from the admin.

Step 4: Fix mixed content warnings

Load your site in a browser and open the developer tools (F12). Go to the Console tab. Mixed content warnings appear as yellow warnings with the URL of the HTTP resource causing them. Common causes:

  • Images or media embedded directly with HTTP URLs in post content (the database replace should have caught these)
  • Plugin settings with hardcoded HTTP URLs (check your contact form plugin, CDN plugin, map embeds, and payment form settings)
  • Theme settings with absolute URLs (check theme customiser, logo URLs, background image settings)
  • External resources loaded over HTTP that the third party doesn't support HTTPS for (in this case, host the resource yourself or remove it)

The Really Simple SSL plugin can resolve most remaining mixed content dynamically. After activation, it rewrites HTTP references to HTTPS in page output in real time. This is a useful safety net but shouldn't be a permanent crutch, ideally you fix the source of the HTTP references so they don't need rewriting on every page load. Use Really Simple SSL while you identify and fix the underlying sources, then evaluate whether you still need it running.

Step 5: Force HTTPS at the server level

Now that WordPress is configured for HTTPS, add a permanent redirect to send all HTTP traffic to HTTPS. Open your .htaccess file and add this before the WordPress rewrite rules (# BEGIN WordPress):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

The 301 status code is a permanent redirect, which passes link equity from HTTP URLs to HTTPS. After adding this, clear your browser cache and test by visiting http://yourdomain.com (explicitly HTTP), it should immediately redirect to the HTTPS version. In cPanel, you can also enable this via Security > SSL/TLS > Force HTTPS Redirect toggle, which does the same thing without editing .htaccess manually.

Step 6: Update all external references

Several external systems need to be updated to reflect the HTTPS migration:

  • Google Search Console: Add the HTTPS version as a new property (https://yourdomain.com and https://www.yourdomain.com are treated as separate properties). Submit your sitemap under the HTTPS property. The HTTP properties can remain for monitoring redirect coverage.
  • Google Analytics (GA4): Verify the data stream URL uses https://. In GA4, go to Admin > Data Streams and confirm the URL is correct.
  • XML sitemap: Regenerate your sitemap (via Yoast SEO, Rank Math, or your sitemap plugin) to ensure all URLs are HTTPS. Submit the new sitemap in Google Search Console.
  • Canonical tags: Check that canonical meta tags in your page source show https:// URLs. Your SEO plugin should handle this automatically once the WordPress URL settings were updated.
  • Social media profiles and backlinks you control: Update any links to your site on social profiles, email signatures, or other websites you manage to use the HTTPS URL.

Step 7: Monitor for issues after migration

In the first two weeks after migration, check Google Search Console's Coverage report to confirm HTTPS URLs are being indexed rather than the HTTP versions. If you see both HTTP and HTTPS URLs being indexed, the redirect or canonical tags may not be working correctly for some pages. Check the Enhancements and Experience reports for any new issues.

A brief dip in tracked rankings and impressions is normal immediately after migration, Google is re-crawling and re-evaluating the HTTPS versions. This typically resolves within 2 to 4 weeks as Google processes the redirects. A sustained, significant drop warrants investigation, check that the redirects are 301 (permanent) and not 302 (temporary), and that canonical tags point to the HTTPS versions.

Free SSL included on every plan, auto-renewed

HostBible includes Let's Encrypt SSL certificates with automatic renewal on every hosting plan. HTTPS is available from day one with no extra cost and no support ticket required.

View Hosting Plans