Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
VGSources
Blog

How to Migrate Multiple WordPress Sites on Different Domains Without Losing Data or SEO

Move each WordPress domain as an independent migration unit: back up files and databases, build and test the destination, replace URLs safely, then cut over DNS with direct permanent redirects and Search Console monitoring.
Length13 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Move each domain as its own controlled migration unit. For every site, copy the complete WordPress files and database to a private destination, replace old URLs with a serialization-aware method, test the new installation before DNS changes, then issue one-to-one permanent redirects and monitor search and server signals. Changing DNS alone does not migrate WordPress data.

The runbook below lets you migrate several independent installations in parallel without treating them as one database. It also identifies the additional database work required when the sites are members of a single WordPress Multisite network.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Decide what you are migrating

Several standalone WordPress sites on different domains may share a host or team, but each remains a separate application. Its database, wp-config.php, uploads, plugins, themes, cron jobs, URL map and redirect rules must be handled independently. Parallel work is safe only when credentials, backups, logs and validation results remain separated by domain.

Use a different migration record for every old-to-new domain pair. Give each record an owner, a planned content freeze, a staging hostname, a cutover time and a rollback contact. A batch spreadsheet can coordinate the work, but never run a network-wide database operation against unrelated installations.

Inventory every site before touching production

Capture the following facts while the old site is still working. This inventory becomes your migration specification and your rollback checklist.

Inventory item What to record Why it matters
Domain and URL variants HTTP/HTTPS, www or apex host, subdomains, mapped paths and language folders These variants can appear in content, canonical tags, redirects and certificates.
Hosting runtime Operating system, PHP version, database engine/version, web server, PHP extensions and filesystem owner The destination must support the application before the domain is switched.
WordPress components WordPress version, active and inactive plugins, themes, child themes, custom code and must-use plugins Inactive code can still hold URLs or provide scheduled tasks.
Data footprint Database size, uploads size, number of posts, media items, users and important URL patterns Large transfers need a suitable export method and enough disk, memory and time.
Operations Cron definitions, server-side jobs, caching, object storage, search indexes and deployment scripts Jobs may continue running on the old server or run twice after cutover.
External dependencies DNS records, SSL certificates, transactional email, forms, analytics, payment callbacks, API keys and plugin license callbacks A page can look correct while a business-critical integration is broken.
Search baseline Important URLs, status codes, titles, canonicals, XML sitemaps, robots rules, traffic and conversions You need a before-and-after comparison and a complete redirect map.
Current redirects Rules at the web server, host, CDN and WordPress level Old rules can create chains or override the new mapping.

Crawl or export a representative set of URLs, including posts, pages, media, pagination, feeds, taxonomy pages, search results and any high-value landing pages. Preserve the export outside the destination server.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build and secure the destination first

  1. Create the target account and database. Provision the destination hosting account, database, database user, PHP/runtime settings and filesystem layout. Match or deliberately upgrade versions only after confirming plugin and theme compatibility.
  2. Use a private staging hostname. Install the destination certificate and create a hostname that is not yet advertised through public DNS. Protect it with authentication or an allowlist. Do not let search engines index the staging copy.
  3. Prepare capacity. Leave room for the original files, the imported database, temporary SQL files, backups, logs and caches. For a large database, verify maximum upload size, execution time and available command-line access before the transfer window.
  4. Prepare DNS and mail records. Copy the required A, AAAA, CNAME, MX, TXT and verification records into a documented change. A web migration does not automatically move email. Confirm which system will send outbound mail after cutover.
  5. Install the required runtime components. Enable the PHP extensions, database character set, rewrite support, cron mechanism and SSL configuration used by the site. Keep the old environment available until verification and rollback decisions are complete.

Freeze changes and create restorable backups

Choose a short content-change window for each site. Announce when editors must stop publishing, commenting or uploading. If a full freeze is impossible, record the exact final database export time and plan a delta procedure; never assume that files alone capture late content.

Create an untouched copy of the complete WordPress directory, including wp-content, uploads, custom themes, plugins and configuration files. Export the complete database, including all tables that belong to the installation. Store at least one copy outside the old and new servers, restrict its permissions and record its checksum or another integrity check.

Keep the original backup unchanged. Make working copies for URL replacement and testing so that a failed search-replace or import can be discarded without rebuilding the source.

Transfer the WordPress files and database

  1. Copy the files. Transfer the entire WordPress directory, preserving symbolic links where they are intentional, file names, permissions and hidden files. Verify that uploads and any custom directories are present rather than relying on a fresh WordPress download.
  2. Export the source database. WP-CLI provides a repeatable export command: wp db export /safe/path/site-old.sql. Run it from the source WordPress directory with the correct site configuration loaded.
  3. Import into the destination database. After creating the destination database and user, import the working SQL copy with wp db import /safe/path/site-old.sql. For very large databases, use the host’s documented command-line import method and capture its output.
  4. Check table prefixes and counts. Confirm that the destination tables use the prefix expected by wp-config.php, that all custom tables arrived and that row counts for key tables are plausible. Missing plugin tables can cause silent loss of settings.

Do not point public DNS at an unverified import. The staging hostname must load the copied files and database first.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set the destination configuration and base URLs

Edit the copied wp-config.php so DB_NAME, DB_USER, DB_PASSWORD and DB_HOST match the destination. Confirm that authentication salts, table prefix, memory limits and any environment-specific constants are intentional. Check ownership and permissions so the web process can read WordPress and write only where required, such as uploads and cache directories.

Set the WordPress home and siteurl values to the destination URL. You can update them in the copied database or with WP-CLI. In the administration interface, the fields are under Settings > General; use the staging URL while testing and the public URL for the final copy. A hard-coded WP_HOME or WP_SITEURL constant overrides database values, so check for those constants before changing rows.

Log in at the staging hostname and visit Settings > Permalinks. Save the existing structure once to regenerate rewrite rules, then test a post and a page. Do not make unrelated permalink changes during a domain migration.

Replace old-domain references without corrupting data

Changing the base URL does not update every occurrence of the old domain. References can be stored in post content, serialized widget settings, theme options, plugin configuration, media metadata, navigation menus, custom tables and scheduled actions. WordPress Developer Resources warns that a blanket SQL replacement can damage serialized values because those values store the length of the original string.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a serialization-aware tool. WP-CLI search-replace, Better Search Replace, Velvet Blues Update URLs and a specialized migration script are commonly used options. Whichever method you choose, work on the copied database, review a dry run and retain the pre-replacement SQL export.

Run a WP-CLI dry run first

From the destination WordPress directory, a typical dry run is:

wp search-replace 'https://old.example' 'https://new.example' --dry-run --report-changed-only

Review the tables and columns reported. Confirm that the old value is the exact scheme and host you intend to replace; run additional passes for variants such as an old http URL or a www hostname only when those variants are genuinely part of the old site.

Execute and export the transformed database

After review, run the same command without --dry-run. Add --precise when accuracy is more important than speed, and --recurse-objects when nested objects require traversal. Use table or column exclusions for values that must not change. The --skip-columns=guid option can preserve the historical guid column when that matches your migration policy; decide this before the run and document it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When a transformed SQL artifact is useful for audit or deployment, export it after the replacement with wp db export /safe/path/site-new.sql. Search the resulting export for the old domain, then inspect any remaining matches to determine whether they are intentional historical data, third-party URLs or missed site references.

Handle special URL forms

  • Replace both the encoded and unencoded forms when a plugin stores URLs in a format your tool distinguishes.
  • Check protocol-relative values such as //old.example, absolute paths, CDN hostnames and image URLs.
  • Review JavaScript, CSS, JSON, shortcode attributes and custom fields; a visual homepage check will not expose every stale reference.
  • Do not replace domains belonging to external services, payment providers or APIs merely because they appear beside the old site URL.

Use a repeatable per-site command sequence

Keep a versioned run sheet for each domain. Adapt paths and credentials to the environment, but preserve the order:

  1. Confirm the content freeze and record the source backup timestamp.
  2. Copy files and export the source database.
  3. Create the destination database and import the working SQL copy.
  4. Update wp-config.php, permissions and environment constants.
  5. Set staging home and siteurl.
  6. Run wp search-replace with --dry-run; save the report.
  7. Run the approved replacement, then export and archive the transformed database.
  8. Regenerate rewrite rules, clear application and object caches, and rebuild any plugin-specific indexes.
  9. Complete the staging validation checklist and crawl.
  10. Approve the DNS and redirect change only after the validation record is signed off.

WP-CLI also supports scripting database export, import and search-replace operations across a portfolio. Keep each site’s working directory, database credentials, SQL files and reports isolated so a variable or path from one domain cannot affect another.

Standalone installations and Multisite require different handling

For independent installations, run the sequence separately. Do not use the --network flag or a shared search-replace script unless the target is actually a single Multisite network.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

In WordPress Multisite, the database stores network and per-site domains and paths. A domain change requires review of .htaccess, wp-config.php, wp_blogs, wp_site and every wp_x_options table. In each site options table, check at least home, siteurl and fileupload_url. Confirm sunrise or domain-mapping code, mapped domains, upload paths and network-wide plugins before replacing values.

WP-CLI’s --network flag scopes a search-replace operation across the network. Use it only after confirming that every affected site belongs to that network and that the old-to-new mapping is correct for each site. A single global old-domain-to-new-domain replacement is unsafe when different subsites move to different domains; use explicit per-site passes or a migration script that understands the mapping.

Validate the staging copy before DNS cutover

Test the destination as an anonymous visitor and as an administrator. Use a crawl of representative URLs rather than relying on the homepage.

  • Authentication: log in, log out, reset a password and verify administrator roles.
  • Front end: test the homepage, templates, navigation, responsive layouts, images, downloads, comments and custom post types.
  • URL behavior: test posts, pages, categories, tags, pagination, feeds, search, attachment URLs and trailing-slash variants.
  • SEO signals: inspect canonical tags, robots directives, XML sitemaps, structured data and any staging noindex or access block.
  • Forms and commerce: submit forms in a safe mode, verify confirmation messages and test payment or subscription callbacks without creating unintended transactions.
  • Integrations: check analytics, webhooks, API endpoints, REST requests, media processing, search indexes and plugin license callbacks.
  • Operations: run scheduled tasks, confirm outbound email, inspect PHP and database logs, clear caches and test backups.
  • Performance and capacity: check response times under an expected request pattern, memory errors, database locks, disk space and queue backlogs.

Compare status codes, page titles, canonical URLs and important content against the source crawl. Fix errors on staging and repeat the crawl; do not use DNS cutover as a debugging step.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cut over DNS and install direct redirects

Lower DNS TTL ahead of the planned change when operationally appropriate, while recognizing that resolvers may retain records beyond the stated TTL. At cutover, point the new domain’s records to the validated destination and verify the certificate for every public hostname.

Keep the old host online. Configure direct server-side permanent redirects—normally HTTP 301 or 308—from each old URL to its most relevant new URL. A redirect should go directly to the final destination, not through an intermediate domain, HTTP-to-HTTPS hop or a second redirect rule. Avoid sending unrelated URLs to the new homepage; map them to an equivalent page or return an intentional 404/410 when no equivalent exists.

Build the redirect map before launch. Include protocol and hostname variants, changed slugs, moved media, pagination and important historical URLs. Test a sample and a large automated set from the old host, recording status code, destination, chain length and final content.

Leave the old application or redirect layer available for rollback and for users following old links. Do not shut it down immediately after the first successful request.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Protect SEO during a domain move

Google’s site-move process is to prepare and test the new site, map every old URL to its corresponding new URL, configure redirects, and monitor both old and new properties. Update internal links, canonical tags, XML sitemaps and structured data to use the destination domain. Remove migration-only noindex directives and robots blocks before making the site public.

Verify ownership of both old and new domains in Search Console and submit Change of Address for a domain-to-domain move. Submit the new sitemap after launch and monitor indexing, coverage, crawl activity, impressions, clicks and important queries. Permanent redirects do not cause a loss in PageRank, but rankings can fluctuate while Google recrawls and reindexes URLs. Google describes a few weeks or more as a possible timeframe for medium-sized sites and longer for larger sites; there is no universal completion date.

Keep redirects for at least one year. Retaining them indefinitely is preferable when users, publishers or other sites may continue to use the old URLs. Watch for redirect chains, soft 404s, accidental canonicalization to the old domain and pages that remain blocked from crawling.

Monitor each migration and keep a rollback path

For every domain, create a dashboard or daily report covering uptime, origin logs, PHP and database errors, 404s, redirect responses, cache status, disk and CPU capacity, cron failures, email delivery, conversions, traffic and Search Console signals. Compare the figures with the pre-migration baseline rather than judging success from a single homepage request.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Define rollback triggers before launch: widespread 5xx responses, unrecoverable database errors, broken checkout or form delivery, severe redirect failures, missing media or unacceptable data loss. If a trigger fires, restore the old DNS target or enable the old host’s service, preserve logs, stop writes to the damaged destination when safe, and identify the failed step. Do not overwrite the untouched backup while investigating.

After the stabilization period, remove temporary staging access, rotate credentials exposed during the transfer, delete temporary SQL files from web-accessible locations and document the final DNS, redirect and backup state.

Choose an approach for a portfolio migration

The right method depends on how many sites you have, how large their databases are and how much shell expertise your team has. The following comparison describes operational trade-offs rather than a universal winner.

Approach Serialized-data safety Repeatability Multisite support Dry run and rollback Operational requirements
Manual file and database transfer Safe only when URL changes use a serialization-aware tool; raw SQL replacement is risky Low unless documented carefully for every site Requires explicit network-table work Possible with untouched backups, but reporting is limited Database, filesystem and DNS knowledge
WP-CLI automation Handles PHP serialized data intelligently and offers exclusions and precision controls High; scripts and reports can be reused per site --network scopes operations across a confirmed network Strong: dry runs, exported SQL and command logs Shell access, correct WordPress context and disciplined credential handling
Migration plugin Varies by plugin; verify serialization handling and custom-table coverage Medium; repeatability depends on consistent settings Verify network compatibility before use May provide staging or previews; retain your own backups Plugin compatibility, upload limits and administrator access
Managed migration service Depends on the provider’s tooling and documented procedure High when the provider supports a portfolio runbook Confirm network expertise and domain mapping Require a written rollback plan, logs and acceptance tests Clear access, maintenance window and responsibility boundaries

For a large set of similar standalone sites, a WP-CLI runbook generally offers the clearest audit trail. For unusual databases, limited shell access or business-critical integrations, specialist migration help can reduce operational risk. In either case, require a per-domain URL map, backup proof, dry-run output, validation results and rollback instructions.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshoot by symptom

Symptom Likely cause Action
Homepage loads but internal links point to the old domain Only home and siteurl were changed Run a serialization-aware search-replace across content, options, metadata and custom tables; inspect remaining old-domain matches.
Widgets, menus or theme settings disappear or reset Serialized values were damaged by raw SQL replacement, or required tables were omitted Restore the working database copy, repeat with a serialization-aware tool and verify all plugin/theme tables were imported.
Images return 404 or mixed-content warnings Uploads were not copied, media URLs were not replaced, or HTTPS rules are incomplete Compare the uploads tree and attachment metadata, replace the correct URL variants and test the certificate and redirects.
Users cannot log in Wrong database credentials, salts, cookie domain or URL constants Check wp-config.php, database connection, salts, forced HTTPS settings and any hard-coded host constants.
Scheduled jobs run twice or stop Both old and new servers remain active, or cron was not enabled at the destination Disable the old scheduler at the agreed point, run due tasks manually where safe and verify server cron and WordPress events.
Search traffic falls sharply Missing redirects, chains, blocked crawling, stale canonicals or incomplete URL mapping Crawl old URLs, inspect response chains, remove accidental blocks, update canonicals and review Search Console processing.
Forms or payment callbacks fail Allowlists, callback URLs, API keys, email DNS or SSL settings still reference the old host Update each integration’s destination and credentials, then perform a controlled end-to-end test.

Final per-domain acceptance checklist

  • Untouched files and database backups are stored outside both servers.
  • Destination runtime, database, SSL and permissions are verified.
  • Old and new URL variants have been inventoried and mapped.
  • WP-CLI dry-run output was reviewed before the real replacement.
  • Serialized data, custom tables and media references were checked.
  • Authentication, front-end templates, forms, email, cron and integrations passed tests.
  • Canonical tags, robots rules, sitemap and internal links use the destination domain.
  • Direct permanent redirects return the expected status without chains.
  • Both Search Console properties are verified and the new sitemap is submitted.
  • Logs, capacity, 404s, conversions and indexing are being monitored.
  • Rollback triggers, contacts and the old host’s availability are documented.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.