Published by HostSteps • Move your site safely without breaking links, SEO, or email
Migrating your website to HostSteps doesn’t have to be stressful — or cause downtime. This guide gives you a proven, structured approach that keeps your site available while you move files, databases, and email. Follow the checklist, test on a staging copy, then “flip the switch” with a clean DNS cutover.
Before You Start — Pre-Flight Checklist
- ✅ Access to your current host (control panel/SFTP/SSH + database).
- ✅ Access to your domain DNS (registrar or DNS provider).
- ✅ A HostSteps plan with enough CPU/RAM/disk for your workload.
- ✅ List of subdomains (e.g., www, mail, app) and third-party services (CDN, payment webhooks, APIs).
- ✅ WordPress/WooCommerce? Note your active plugins, caching, and cron jobs.
Tip: Lower DNS TTL 24 hours before cutover. Set A/CNAME/MX-related records to 300 seconds so changes propagate quickly on launch day.
Step 1 — Create a Staging Copy on HostSteps
- Add your domain/subdomain in the HostSteps panel (use a temporary subdomain like staging.yourdomain.com).
- Upload a placeholder
index.htmlto confirm the staging vHost works over HTTP/HTTPS. - Ensure PHP version, extensions, and memory limits match (or improve upon) the old host.
Step 2 — Copy Files Safely
Use SFTP or SSH. With SSH available, rsync is fast and reliable:
# From the old host (or from your local machine pulling over SSH)
rsync -avz --progress --exclude='cache/*' --exclude='node_modules/*' \
user@old-host:/path/to/site/ user@hoststeps:/home/USER/public_html/
Exclude large caches, backups, and build artifacts. You can sync again later for final delta changes.
Step 3 — Export & Import the Database
Use phpMyAdmin or CLI. CLI is faster and more robust:
# On old host
mysqldump -u dbuser -p --single-transaction --quick --hex-blob dbname > /tmp/site.sql
# On HostSteps
mysql -u NEWUSER -p NEWDB < /tmp/site.sql
Update application configs to the new DB credentials. For WordPress:
// wp-config.php (example)
define('DB_NAME', 'NEWDB');
define('DB_USER', 'NEWUSER');
define('DB_PASSWORD', 'NEWPASS');
define('DB_HOST', 'localhost');
Search & Replace Site URLs (WordPress)
If the staging URL differs from production, update serialized URLs with WP-CLI:
# On HostSteps (inside WordPress document root)
wp search-replace 'https://oldsite.com' 'https://staging.yourdomain.com' --all-tables --precise
On launch, you’ll run the reverse replace to switch from staging to live domain.
Step 4 — Configure HTTPS, Cache & Cron
- Issue a free SSL in your panel and confirm padlock on the staging URL.
- Enable server-level/page caching (and object caching if your stack supports it).
- Set up cron jobs (WordPress:
wp-cronto real cron for reliability).
# Disable WP pseudo-cron and add real cron
# wp-config.php
define('DISABLE_WP_CRON', true);
# crontab -e (example: run every 5 minutes)
*/5 * * * * php /home/USER/public_html/wp-cron.php >/dev/null 2>&1
Step 5 — Test the Staging Site Thoroughly
- Pages, forms, search, login, checkout (if e-commerce), and integrations (payment, CRM, email).
- File uploads, image optimization, and caching behavior.
- Error logs (
error_log, PHP logs) and console warnings (mixed content, CORS).
Performance tip: Turn on page caching, gzip/brotli, HTTP/2, and image compression. Add a CDN if your audience is global.
Step 6 — Freeze Changes & Do a Final Delta Sync
Schedule a short “content freeze” window (e.g., late night). Temporarily pause new content, orders, or comments on the old host. Then run a final sync:
# Files delta
rsync -avz --delete --exclude='cache/*' user@old-host:/path/to/site/ user@hoststeps:/home/USER/public_html/
# DB delta
mysqldump -u dbuser -p --single-transaction dbname > /tmp/final.sql
mysql -u NEWUSER -p NEWDB < /tmp/final.sql
WordPress only: switch URLs back to the live domain in the new DB:
wp search-replace 'https://staging.yourdomain.com' 'https://yourdomain.com' --all-tables --precise
Step 7 — DNS Cutover (The “Switch”)
- Update the A record for @ (root) to your HostSteps server IP.
- Set CNAME www → @ (or to the same root).
- Keep TTL at 300s for quick propagation; expect traffic to move within minutes.
- Verify the live site loads from HostSteps (check server headers or a “diagnostic” file only on new host).
Once traffic has stabilized on HostSteps, raise TTL back to a standard value (e.g., 3600).
Step 8 — Email Migration (If You Host Mail)
If your email is moving too, adjust MX and add SPF/DKIM/DMARC:
| Record | Host | Value | Notes |
|---|---|---|---|
| MX | @ | mail.yourdomain.com (prio 10) | Points inbound mail to HostSteps |
| A | Your HostSteps IP | Mail hostname A record | |
| TXT | @ | v=spf1 a mx ip4:<your_ip> ~all | SPF: better deliverability |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:postmaster@yourdomain.com | DMARC policy + reports |
| TXT | default._domainkey | v=DKIM1; k=rsa; p=<public_key> | DKIM signing |
Export old mailboxes (IMAP sync) or forward both ways during the transition to avoid lost messages.
Step 9 — Post-Migration QA & Hardening
- Force HTTPS and add security headers (HSTS, X-Frame-Options, CSP).
- Re-enable scheduled jobs and transactional emails.
- Confirm Webhooks (payments, shipping, forms) point to the new host.
- Monitor logs, 404s, and performance for 48–72 hours.
Rollback Plan (Just in Case)
If something critical breaks, revert DNS A/CNAME back to the old host (thanks to the low TTL), fix the issue on staging, then retry the cutover. Keep old hosting active for a few days until you’re fully confident.
FAQs
Q1: Will there be any downtime?
With a staging copy, final delta sync, and low DNS TTL, downtime is typically near-zero — often just a few minutes of cache propagation.
Q2: Can HostSteps migrate the site for me?
Yes. We can handle files, databases, DNS, SSL, and email — and coordinate a clean cutover.
Q3: What about SEO?
URLs remain the same. If paths change, add 301 redirects. Keep HTTPS, sitemaps, and Search Console verified.
Q4: How do I test on the live domain without changing DNS?
Edit your local hosts file temporarily to point the domain to the HostSteps IP.
Launch Smoothly with HostSteps
Follow this plan and you’ll move with confidence — no broken pages, no email surprises, and no long outages. If you’d like us to do it for you, our engineers are happy to help end-to-end.
🔗 Request a zero-downtime migration with HostSteps
© HostSteps — Fast, secure, and reliable hosting for modern businesses.
