Case study
TECHNICAL SEO · E-COMMERCE · DOMAIN CONSOLIDATION
How we consolidated two competing domains on a large e-commerce catalog - without losing SEO equity
Two live domains of the same business were cannibalizing each other in organic search. We mapped ~12,400 URLs and shipped 12,345 individually configured 301 redirects with custom 404 fallback logic - with zero manual review required from the client.
Bulgarian e-commerce retailer (NDA)
The situation
We work proactively - we don't wait for clients to bring us a problem, we go looking for one. That's exactly how this project started: while analyzing the competitive landscape in the appliance spare-parts niche, we noticed something off. Two separate, live domains belonging to the same business, with an almost identical product catalog, were competing against each other in organic search.
A textbook case of internal cannibalization: Google can't decide which domain to rank, and often ends up under-ranking both instead of boosting either.
The infrastructure made it more complicated. The new (target) domain ran on standalone Nginx hosting, integrated directly with the client's ERP system for stock and pricing. The legacy domain lived entirely inside a SaaS e-commerce platform, with DNS (via Cloudflare) managed by the platform itself - the client had no direct access to it.
That meant that before any redirect strategy could even be discussed, there was an infrastructure problem to solve: how to detach the legacy domain from the platform enough to apply server-side 301 redirects at all.
The client had actually declined to work with us on this before - timing and priorities just hadn't aligned. We came back with concrete findings instead of a generic pitch, and that made the difference.
Phase 1: Audit and redirect mapping
Phase 1: Audit and redirect map
A complete redirect map covering ~12,400 URLs, a ready-to-deploy .htaccess file, a backup of the existing platform structure, and a summarized report for the client.
Detaching from the SaaS platform
We weighed three options: Cloudflare bulk redirects (ruled out - the client had no access to the account); redirecting directly from the legacy domain's own hosting environment; and a full migration onto the target site's hosting. Before committing, we uploaded an .htaccess file with a single dummy redirect rule via FTP to confirm the mechanism worked. It did.
Phase 2: Implementation
We migrated the legacy domain's nameservers and added it as an add-on domain under the same hosting account already running the target site. We generated a single .htaccess file with an individual Redirect 301 rule for each of the 12,345 URLs in the map and uploaded it via FTP.
Monitoring and Change of Address
10-14 days of active post-launch monitoring, a Google Search Console Change of Address submission to formally signal the domain change to Google, and a final stability check.
Why it worked
Data before assumptions. Scale demands automation with quality control. Infrastructure defines what's possible - SaaS platform lock-in directly dictates which technical solutions are even on the table. And the final detail - custom 404 logic instead of a catch-all redirect - is the small-looking difference that preserves SEO equity instead of just moving the problem out of sight.
The final result
- 12,345 individually configured 301 redirects, each pointing to a specific, relevant destination page - not a generic homepage catch-all.
- Custom 404 handling for any URL falling outside the map - instead of soft 404 errors (a page that technically returns 200 but is empty or irrelevant), users and Google both get a proper, useful response.
- Zero rows of manual review on the client's side - we handed over a finished, approval-ready outcome.
- That detail - routing every redirect to a specific page instead of a catch-all - was a deliberate choice. Generic homepage redirects are a common SEO quick fix, but they carry real risk: Google can treat them as soft 404s and fail to pass along the SEO equity of the original page. At a volume of over 12,000 URLs, that distinction has a measurable impact.
Stack
- Python (pandas, rapidfuzz)
- Screaming Frog
- Google Search Console
- Apache / .htaccess
- Nginx
- DNS migration
Verified via:
- Google Search Console
- Screaming Frog crawl
- HTTP status code verification
Want similar results?
Every project starts with a short 30-minute conversation where we form specific recommendations.
Book Consultation