Migrating to a new hosting provider is one of the most feared tasks for website owners — and for good reason. When done incorrectly, a hosting migration can wipe out months or years of accumulated SEO rankings in a matter of hours. The good news is that when approached systematically, hosting migrations can be completely safe from an SEO standpoint. This guide provides a complete checklist covering every stage of the process: pre-migration preparation, backup and file transfer, DNS management, testing before go-live, and post-migration verification.

Why Hosting Migrations Affect SEO

Before diving into the checklist, it is important to understand which specific SEO factors are at risk during a hosting migration. Many website owners assume that moving files to a new server and updating DNS is all that is needed. In reality, there are several SEO-relevant elements that can break if not handled carefully.

Understanding these risks is the foundation that makes every step in the checklist below meaningful, as each step is designed specifically to eliminate one or more of these risk factors.

Pre-Migration Checklist: What to Do Before You Start

Thorough preparation is the most important phase. Most SEO problems from hosting migrations occur because webmasters did not record baseline data before starting, leaving them with no way to diagnose problems after the fact.

1. Record Your Current Baseline

Before touching anything on your current server, document the following data thoroughly:

2. Audit Your Complete URL Structure

Use a tool like Screaming Frog or wget to crawl all URLs on your current website. Build a spreadsheet listing every URL, its HTTP status code, and estimated backlink count. This becomes your redirect map if any URLs change during migration.

# Crawl your website with wget to capture all URLs
wget --spider --recursive --no-verbose --output-file=crawl-log.txt \
  https://yourdomain.com 2>&1

# Extract just the URLs from the log
grep "^--" crawl-log.txt | awk '{print $3}' | sort -u > url-list.txt

# Count total URLs
wc -l url-list.txt

3. Lower DNS TTL 24–48 Hours Before Migration Day

This is the step most commonly skipped, yet it is critical for a smooth transition. The TTL (Time to Live) value on DNS records tells resolvers worldwide how long to cache the record. Typical values are 3600–86400 seconds (1–24 hours).

If you do not lower TTL in advance, after you update your A Record to the new server some users may continue reaching the old server for up to 24 hours, creating duplicate content and inconsistent user experiences during that window.

# Check current TTL on your A record
dig yourdomain.com A

# Example output shows TTL value:
# yourdomain.com. 3600 IN A 203.x.x.x
# The number 3600 is the current TTL in seconds

# To verify propagation after lowering TTL, check from multiple resolvers:
dig yourdomain.com A @8.8.8.8
dig yourdomain.com A @1.1.1.1

Set TTL to 300 seconds at least 24–48 hours before migration day. Wait for that reduced TTL to propagate worldwide before starting the server migration. After migration is confirmed stable, restore TTL to 3600 or 86400.

Backup and Migration: Doing It Right

A complete backup is not just copying web files. It must cover files, databases, email, and server configuration to avoid losing data or settings that are invisible in a standard file manager view.

Complete Backup Checklist

Proper Database Export

# Export database using mysqldump (run on old server)
mysqldump -u DB_USER -p DB_NAME \
  --single-transaction \
  --routines \
  --triggers \
  --add-drop-table \
  > backup-$(date +%Y%m%d).sql

# Check backup file size
ls -lh backup-*.sql

# Import on new server
mysql -u NEW_DB_USER -p NEW_DB_NAME < backup-2026XXXX.sql

Test the New Server Before Changing DNS

This is the single most important step in the entire migration process. Before pointing DNS to the new server, edit your local machine's hosts file to temporarily point your domain to the new server's IP address. This lets you test the new server in a production-identical environment without affecting live traffic.

# On macOS / Linux, edit /etc/hosts
sudo nano /etc/hosts

# Add these lines (replace 1.2.3.4 with new server's actual IP)
1.2.3.4  yourdomain.com
1.2.3.4  www.yourdomain.com

# On Windows, edit C:\Windows\System32\drivers\etc\hosts
# Must be opened as Administrator

Test every critical page, login flow, form submission, and checkout process. Verify no 404 or 500 errors appear. Check that all CSS and JavaScript load correctly. Only remove the hosts file entry and proceed with DNS changes once everything works perfectly.

Setting Up 301 Redirects and SSL on the New Server

If your migration involves any URL structure changes — such as switching CMS platforms, changing file extensions, or reorganizing directory structure — you must implement 301 redirects for every changed URL without exception.

Common Redirect Patterns During Hosting Migrations

# Case 1: Changing .php extensions to .html
RewriteRule ^([^/]+)\.php$ /$1.html [R=301,L]

# Case 2: Adding trailing slashes to directory URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

# Case 3: Old query-string URLs to clean slugs
RewriteCond %{QUERY_STRING} ^p=([0-9]+)$
RewriteRule ^index\.php$ /new-post-slug/? [R=301,L]

# Case 4: Moved category path
RewriteRule ^old-category/(.*)$ /new-category/$1 [R=301,L]

Verify SSL Certificate on the New Server

Before switching DNS, confirm that the SSL certificate on the new server is valid and covers your domain. Whether you are using Let's Encrypt or a paid SSL certificate, it must be active and correctly configured before go-live. With DirectAdmin hosting, you can issue and manage SSL certificates directly from the control panel.

# Test SSL certificate from your local machine (after editing hosts file)
curl -I https://yourdomain.com --resolve yourdomain.com:443:1.2.3.4

# Check SSL certificate expiry date
echo | openssl s_client -servername yourdomain.com \
  -connect yourdomain.com:443 2>/dev/null | \
  openssl x509 -noout -dates

Pro Tip: If migrating a WordPress site, always update the siteurl and home values in the database to point to your new server before testing. Use WP-CLI: wp search-replace 'http://old-server-ip' 'https://yourdomain.com' --all-tables. Without this step, CSS, JavaScript, and image files will still load from the old server, causing the page to appear broken even though the files were copied correctly.

Migration Stages: What to Check at Each Phase

Phase Actions Required Tools Expected Result
D-2 (Prep) Record baseline, lower TTL, build redirect map GSC, dig, Screaming Frog TTL = 300 seconds
D-Day Full backup, upload files, import DB, configure SSL FTP/SCP, mysqldump, DirectAdmin Site running on new server
Pre-DNS Test via /etc/hosts, verify SSL, test all functions Browser, curl, openssl Zero 404/500 errors
DNS Switch Update A Record, verify propagation worldwide DNS control panel, whatsmydns.net New IP propagated <10 min
D+1 (Monitor) Check GSC errors, crawl stats, speed scores GSC, PageSpeed Insights, curl No new errors, speed stable

Post-Migration Verification: The Final Checklist

Once DNS has fully propagated worldwide, your work is not finished. The post-migration verification phase is just as important as the migration itself — this is where you confirm everything is working correctly or catch problems before they affect traffic significantly.

Technical SEO Checks Using curl

# Check HTTP status codes for key pages
curl -I https://yourdomain.com/
curl -I https://yourdomain.com/important-page.html

# Verify HTTP redirects to HTTPS (must be 301, not 302)
curl -I http://yourdomain.com/

# Check robots.txt is accessible and correct
curl https://yourdomain.com/robots.txt

# Check sitemap loads without errors
curl https://yourdomain.com/sitemap.xml | head -20

# Measure TTFB (Time to First Byte)
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" \
  https://yourdomain.com/

Post-Migration Checklist

Submit Your Sitemap and Request Re-indexing

After migration is confirmed stable, submit your sitemap again through Google Search Console to accelerate the re-crawling process. If URLs changed during migration, use the URL Inspection tool in Search Console to request indexing for your 5–10 most important pages individually. You can also use IndexNow to notify Bing and Yandex simultaneously.

# Submit URLs via IndexNow
curl -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "yourdomain.com",
    "key": "YOUR_INDEXNOW_KEY",
    "urlList": [
      "https://yourdomain.com/",
      "https://yourdomain.com/page1.html",
      "https://yourdomain.com/page2.html"
    ]
  }'

Common Mistakes and How to Avoid Them

Based on helping hundreds of clients through hosting migrations, here are the mistakes that cause the most SEO damage and how to avoid each one.

Mistake 1: Forgetting to Transfer Hidden Files

Files like .htaccess, .env, and .htpasswd are invisible in most FTP clients unless you explicitly enable "Show hidden files." Always verify these files were transferred. The .htaccess file in particular often contains critical redirect rules, cache headers, and security settings that are essential for the site to work correctly.

# Use SCP which transfers hidden files automatically
scp -r oldserver:/home/user/public_html/. newserver:/home/user/public_html/

# Or in FileZilla: Server menu > Force showing hidden files

Mistake 2: Database URLs Still Point to Old Server

WordPress and many other CMSes store the site's own URL inside the database. After importing the database to the new server, those stored URLs still reference the old server. This causes CSS, JavaScript, and images to load from the old server — making the site appear broken.

# Use WP-CLI to search and replace URLs in the database
wp search-replace 'https://old-domain.com' 'https://new-domain.com' \
  --all-tables --precise --report-changed-only

# Or use the database update queries directly:
UPDATE wp_options SET option_value = 'https://new-domain.com'
  WHERE option_name IN ('siteurl', 'home');

Mistake 3: Not Recreating Cron Jobs

Scheduled cron jobs — such as automated email notifications, backup tasks, or cache purges — do not migrate automatically with your files. You must manually recreate them on the new server. With DirectAdmin, cron jobs can be managed directly from the control panel's Cron Jobs section.

Mistake 4: Forgetting to Update MX Records

If your site uses email hosted on the same server, and you are migrating email accounts as well, you must ensure MX records point to the new server after migration. Failing to do this means emails sent to your domain will still be delivered to the old server or bounce entirely.

# Verify current MX records
dig yourdomain.com MX +short

# Check against a specific DNS server to confirm propagation
nslookup -type=MX yourdomain.com 8.8.8.8

SEO Recovery Timeline After Migration

After a successful hosting migration, do not panic if you see ranking fluctuations in the first few weeks. This is completely normal behavior as Google re-evaluates your site on the new server. Here is the typical timeline to expect:

Monitoring Google Search Console reports weekly for the first 4–6 weeks after migration is essential. Early detection of crawl errors or coverage issues allows you to address problems before they result in significant traffic loss.

Frequently Asked Questions

Will my SEO rankings drop after migrating hosting?

If planned correctly with proper 301 redirects in place, your SEO rankings should not drop permanently. Google typically takes 1–4 weeks to re-crawl and re-index pages after a migration. You may see minor fluctuations during this period, but rankings should stabilize or even improve if the new server is faster than the old one.

Do I need 301 redirects for every URL when migrating hosting?

If you are migrating to a new hosting provider but keeping the same domain and URL structure, you do not need 301 redirects because the URLs remain unchanged. However, if you are changing URL patterns at the same time — for example from /page.php to /page.html — you must implement 301 redirects for every changed URL to preserve link equity and prevent 404 errors.

How far in advance should I lower DNS TTL before migrating?

You should reduce your DNS TTL to 300 seconds (5 minutes) at least 24–48 hours before migration. This allows the reduced TTL to propagate to DNS resolvers worldwide, so when you update your A Record to point to the new server, the change will take effect within 5–10 minutes globally instead of waiting the full original TTL period.

How do I test the new hosting before changing DNS?

Edit the hosts file on your local machine to point your domain to the new server's IP address temporarily. On macOS/Linux, edit /etc/hosts and add a line like '1.2.3.4 yourdomain.com'. Open your browser and test all critical pages, forms, logins, and checkout flows. Only update the DNS once everything works correctly on the new server.

DirectAdmin Hosting from AsiaGB

AsiaGB Hosting includes full DirectAdmin support, PHP 8.3, MySQL, and starts at just 500 THB/year.

View Hosting Plans

View all cheap Thailand web hosting plans →