redirect-map-large-site-migration.html
< BACK लकड़ी की डेस्क पर एनोटेटेड पेपर मैप लाल स्याही के तीर और ठंडी चाय के साथ, धुंधली खिड़की की रोशनी

20,000-URL साइट माइग्रेशन के लिए रीडायरेक्ट मैप कैसे बनाएं

2021 में, एक बड़े UK retailer ने Seahawk को 22,000 से ज़रा ज्यादा indexed URLs वाली एक साइट के लिए migration का काम दिया। dev team चार महीने से नए platform पर काम कर रहा था। उनके पास launch date था। उनके पास staging site था। जो उनके पास नहीं था, और सच में सोचा ही नहीं था, वह था redirect map। न ही कोई rough version। न ही कुछ भी। SEO lead की plan यह था कि "launch के बाद handle कर देंगे।" मैं अभी भी उस meeting के बारे में सोचता हूँ कभी-कभी।

हमने लॉन्च को तीन हफ्ते आगे बढ़ा दिया। पूरी तरह से रीडायरेक्ट स्ट्रेटेजी फिर से बनाई। साइट सफाई के साथ लॉन्च हुई, ट्रांजिशन के दौरान 94% ऑर्गेनिक ट्रैफिक रखी, और क्लाइंट ने हमें Scotch की एक बोतल भेजी। तीन हफ्े की देरी ने उन्हें उस चीज से बचा दिया जो लगभग निश्चित रूप से छह महीने की रिकवरी की एक लंबी यात्रा होती।

तो। यहाँ है कि आप इस स्केल पर एक साइट के लिए redirect map कैसे बनाते हो — प्रक्रिया, tools, prioritisation logic, और वह हिस्से जो ज्यादातर migration guides चुपचाप छोड़ देती हैं।

---

एक संपूर्ण URL इन्वेंटरी के साथ शुरू करें

आप जिसकी गिनती नहीं किए हो उसे map नहीं कर सकते। किसी भी चीज़ से पहले, आपको origin site के हर live, indexed URL का पूरा export चाहिए। सिर्फ sitemap नहीं। Sitemaps झूठ बोलते हैं, वे अक्सर outdated होते हैं, वे paginated URLs को exclude करते हैं, और वे उन product या archive pages को छोड़ देते हैं जिन्होंने साल भर में links जमा किए हैं।

मैं Screaming Frog SEO Spider को list mode में एक combined source के विरुद्ध चलाता हूँ: XML sitemap साथ में Google Search Console का export सभी indexed URLs का। ये दोनों sources मिलकर लगभग हमेशा URLs surface करते हैं जो दूसरा miss करता है। 20,000-URL वाली साइट के लिए, actual crawl count कहीं भी 18,000 और 35,000 के बीच आएगा — pagination, filters, faceted nav, सब कुछ।Screaming Frog SEO Spider in list mode against a combined source: the XML sitemap plus a Google Search Console export of all indexed URLs. Those two sources together almost always surface URLs the other misses. For a 20,000-URL site, expect the real crawl count to come back anywhere between 18,000 and 35,000, pagination, filters, faceted nav, all of it.

crawl को एक spreadsheet में export करें। आपको कम से कम चाहिए: URL, HTTP status, title tag, H1, inbound internal links count, और चाहे यह GSC में impressions के साथ दिखाई दे। यह आखिरी column लोगों द्वारा स्वीकार किए जाने से कहीं ज्यादा महत्वपूर्ण है।

उन 404s को भूल मत जाइए जो अभी भी traffic पाते हैं।

जब आप GSC में हों, तो Coverage report निकालिए और हर वह URL लीजिए जिसे Google ने पिछले छह महीनों में crawl करने की कोशिश की है, existing 404s सहित। कुछ broken pages के पास अभी भी उन्हें point करने वाली external backlinks हैं। मैंने एक 404 देखा है जिसके पास 40 referring domains थे एक साइट पर जिसे दो साल से maintain नहीं किया गया था। उन्हें भी destination चाहिए।

---

Mapping से पहले Categorise करें

20,000 URLs की एक flat list unusable है। Crawl export के बाद पहली चीज़ जो मैं करता हूँ वह है हर URL को type के आधार पर categorise करना, क्योंकि mapping logic completely different होती है इस बात के आधार पर कि URL क्या है।is.

यहाँ वह rough taxonomy है जो मैं use करता हूँ:

  • Product pages, नए product URL से 1:1 map करें जहाँ संभव हो, 1:1 map to new product URL where possible
  • Category / collection pages, equivalent नए category को map करें, या nearest parent को, map to equivalent new category, or nearest parent
  • Blog posts / articles, slug से match करें, title similarity से, या topic cluster से, match by slug, title similarity, or topic cluster
  • टैग और आर्काइव पेज, आमतौर पर कैटेगरी या होमपेज में समेकित करें, usually consolidate to category or homepage
  • पेजिनेटेड URLs (जैसे /category/shoes/page/3), लगभग हमेशा → पैरेंट कैटेगरी (e.g. /category/shoes/page/3), almost always → parent category
  • यूजर-जेनरेटेड या अकाउंट URLs, आमतौर पर छोड़ें या लॉगिन पर रीडायरेक्ट करें, usually drop or redirect to login
  • पुराने कैंपेन लैंडिंग पेज, रीडायरेक्ट का फैसला करने से पहले लिंक इक्विटी का मूल्यांकन करें, evaluate link equity before deciding
  • डुप्लिकेट/कैनोनिकल वेरिएंट, कैनोनिकल पर रीडायरेक्ट करें, बस इतना ही, redirect to the canonical, full stop

Google Sheets में dropdown column के साथ यह categorisation स्टेप करना कुछ घंटे लेता है। यह दिन बचाता है। एक बार जब सब कुछ type हो जाए, तो आप 20,000 अलग-अलग फैसलों के बजाय प्रत्येक श्रेणी पर अलग rule set लागू कर सकते हैं।

---

मिलान चरण: स्वचालित पहले, मैनुअल दूसरा

यहीं पर ज्यादातर टीमें गलती करती हैं। वे हर URL को मैन्युअली मैच करने की कोशिश करते हैं। 20,000 rows के साथ यह बस एक नर्वस ब्रेकडाउन की प्रतीक्षा है, थोरोनेस नहीं।

मेरी प्रक्रिया पहले ऑटोमेटेड मैचिंग है, दूसरे मैनुअल रिव्यू, सिर्फ उन URLs के लिए जो वाकई मायने रखते हैं।

VLOOKUP और Python के साथ ऑटोमेटेड मैचिंग

उन साइटों के लिए जहां पुराने और नए के बीच URL स्ट्रक्चर समान है (उदाहरण के लिए /products/red-shoes/ से /shop/red-shoes/ बनना), Sheets में slug portion पर सिर्फ एक VLOOKUP दस मिनट से भी कम में 60–70% लिस्ट को सॉर्ट कर देता है। Regex-based find/replace स्ट्रक्चरल पैटर्न चेंजेस को हैंडल करता है।/products/red-shoes/ becoming /shop/red-shoes/), a simple VLOOKUP in Sheets on the slug portion sorts out 60–70% of the list in under ten minutes. Regex-based find/replace handles structural pattern changes.

ज्यादा जटिल माइग्रेशन, प्लेटफॉर्म बदलाव, पूरे IA रीडिज़ाइन के लिए मैं एक छोटी सी Python स्क्रिप्ट यूज करता हूँ जो पुरानी क्रॉल एक्सपोर्ट और नई साइट की क्रॉल के बीच पेज टाइटल पर fuzzy string मैचिंग करती है। thefuzz लाइब्रेरी (पहले FuzzyWuzzy) इसे अच्छी तरह करती है। 85% के ऊपर कोई भी मैच स्कोर ऑटो-असाइन हो जाता है। नीचे का सब कुछ मैनुअल रिव्यू क्यू में जाता है।thefuzz library (formerly FuzzyWuzzy) does this well. Anything above an 85% match score gets auto-assigned. Anything below goes into a manual review queue.

मैन्युअल क्यू आमतौर पर लिस्ट का 20–30% होता है। इसका सब कुछ सीनियर अटेंशन की जरूरत नहीं है।

मैन्युअल क्यू को प्रायोरिटाइज करना

सभी 20,000 URLs को बराबर टाइम नहीं मिलना चाहिए। मैं हर URL को स्कोर करता हूं:

  1. पिछले 90 दिनों में GSC impressions, अगर यह सर्च ट्रैफिक ला रहा है, तो यह हाई प्रायोरिटी है, if it's driving search traffic, it's high priority
  2. रेफरिंग डोमेन की संख्या (Ahrefs से ली गई), लिंक इक्विटी जिसे आप खोना नहीं सकते (pulled from Ahrefs), link equity you can't afford to drop
  3. क्रॉल से इंटरनल लिंक काउंट, संरचनात्मक महत्व का संकेत, signals structural importance
  4. राजस्व attribution, अगर क्लाइंट GA4 ecommerce डेटा प्रदान कर सकता है, तो conversions चलाने वाले पेज शीर्ष पर चले जाते हैं, if the client can provide GA4 ecommerce data, pages driving conversions jump to the top

जो कुछ भी impressions, backlinks या राजस्व के साथ है, उसे human mapping decision की जरूरत है। बाकी सब कुछ rule-based fallback को follow कर सकता है (आमतौर पर → parent category या homepage)। ईमानदारी से कहूँ तो, 20,000-URL वाली साइट के लिए, शायद 800–1,200 URLs को ही असल में individual attention की जरूरत है। बाकी सब long-tail cruft है।

---

Redirect Map Document को संरचित करना

अंतिम map एक spreadsheet में रहता है। सरल। इस स्तर पर कोई clever tooling की ज़रूरत नहीं है, फ़ाइल सिर्फ़ स्पष्ट और importable होनी चाहिए।

मैं जिन columns का उपयोग करता हूँ:

  1. Source URL (पूरा, old page का absolute URL)
  2. Destination URL (पूरा, new page का absolute URL)
  3. Redirect type (लगभग हर मामले में 301, 302 केवल genuinely temporary के लिए, जो दुर्लभ है)
  4. मिलान प्रकार (exact / pattern / regex)
  5. श्रेणी (वर्गीकरण चरण से)
  6. Priority tier (High / Medium / Low, ऊपर दिए गए scoring के आधार पर)
  7. स्थिति (Pending / Confirmed / Implemented / Tested)
  8. नोट्स

वह "Notes" column कम आंका हुआ है। यह वह जगह है जहाँ आप "client confirmed this product is discontinued, redirect to category" या "backlink from Forbes pointing here, map to closest equivalent not homepage" जैसी चीज़ें डालते हैं। भविष्य का आप वर्तमान आप को धन्यवाद देगा।

source URLs को बिल्कुल वैसे रखें जैसे वे दिखाई देते हैं, trailing slash के साथ या बिना, query strings के साथ यदि लागू हो। यहाँ inconsistency partial matches और missed redirects का कारण बनती है जो launch के बाद diagnose करने में nightmare है।

---

पैटर्न-आधारित बनाम Exact रीडायरेक्ट्स

इस scale पर आपको absolutely pattern-based redirects चाहिए, सिर्फ़ exact-match वाले नहीं। एक .htaccess फ़ाइल में 20,000 individual Redirect 301 lines लिखना, ठीक है, यह काम करता है, लेकिन यह fragile है, parse करने में slow है, और एक maintenance disaster है।Redirect 301 lines in an .htaccess file is, well, it works, but it's fragile, slow to parse, and a maintenance disaster.

Apache/WordPress सेटअप के लिए, मैं structural patterns के लिए regex-आधारित RewriteRules का उपयोग करता हूँ। उदाहरण के लिए, अगर /old-blog/[post-slug]/ के तहत हर पुराना URL /insights/[post-slug]/ पर map करता है, तो वह एक rule है, 4,000 नहीं।regex-based RewriteRules for structural patterns. For example, if every old URL under /old-blog/[post-slug]/ maps to /insights/[post-slug]/, that's one rule, not 4,000.

Nginx पर, same principle rewrite directives के साथ लागू होता है। Cloudflare पर, आप Bulk Redirects का उपयोग कर सकते हैं (उनका free tier 20 exact-match rules तक handle करता है; Workers या paid Redirect Rules product scale पर pattern logic को handle करता है)।rewrite directives. On Cloudflare, you can use Bulk Redirects (their free tier handles up to 20 exact-match rules; Workers or the paid Redirect Rules product handles pattern logic at scale).

Map document को flag करना चाहिए कि कौन से redirects pattern-eligible हैं बनाम कौन से exact matching की जरूरत है। आमतौर पर: blog posts, products, और category pages patterns का पालन करते हैं। पुराने campaign pages, legacy subdomains, और weird historical URLs को exact matching की जरूरत है।

Pattern को live होने से पहले test करें।

मैं पूरे pattern rule set को staging environment में URL list के विरुद्ध चलाता हूँ और Redirect Checker (bulk) या bash में एक curl loop जैसे tool से हर redirect response को log करता हूँ। हर chain redirect (old → interim → new) एक समस्या है, Google chains को follow करेगा लेकिन हर hop पर कुछ link equity खो देता है। Launch से पहले उन्हें flatten करें।Redirect Checker (bulk) or a curl loop in bash. Every chain redirect (old → interim → new) is a problem, Google will follow chains but loses some link equity at each hop. Flatten them before launch.

---

लंबी पूँछ को संभालना: Fallback Strategy

20,000-URL site के बारे में यह बात है, उनमें से कुछ हज़ार URLs को शायद zero traffic है, zero backlinks हैं, और कोई भी उन्हें दोबारा visit करने का कोई कारण नहीं है। उन सभी को homepage पर redirect करना एक अलग समस्या बनाता है: यह Google को manipulative दिखता है, और यह users को confuse करता है जिन्होंने एक specific link को follow किया।

मेरी fallback hierarchy:

  • अगर URL एक subcategory page है जिसमें no traffic और कोई links नहीं हैं → parent category को redirect करें।
  • अगर यह टैग या लेखक आर्काइव है → ब्लॉग इंडेक्स पर रीडायरेक्ट करें
  • अगर यह वाकई एक अनाथ पृष्ठ है जिसका कोई तार्किक समकक्ष नहीं है → इसे 404 होने दें, या किसी अच्छे डिज़ाइन किए गए 404 पृष्ठ पर सॉफ्ट-रीडायरेक्ट करें जिसमें नेविगेशन हो

एक अच्छा custom 404 page contextual search और popular category links के साथ इन visits में से अधिक को recover करता है एक blanket homepage redirect की तुलना में। मैंने एक Seahawk client के लिए पिछले साल एक बनाया था, इसमें 28% "recovered" rate था (users 404 से दूसरे page पर navigate कर रहे थे) versus पहले लगभग 9%।

---

लॉन्च के बाद का सत्यापन

रीडायरेक्ट मैप लॉन्च पर खत्म नहीं होता। पहले 72 घंटे महत्वपूर्ण हैं।

मैंने लॉन्च से एक दिन पहले GSC प्रॉपर्टी वेरिफिकेशन सेट अप किया, फिर पहले दो हफ्तों तक रोज़ Coverage रिपोर्ट को मॉनिटर करता हूँ। लॉन्च के बाद नए 404s आना आमतौर पर उन URLs को दर्शाता है जो इन्वेंटरी से छूट गए, rogue पैरामीटर variants, hreflang alternates, या बाहरी ईमेल कैम्पेन में पुराने URLs।

हर नए 404 के लिए जो मुझे मिलता है, मैं एक रीडायरेक्ट जोड़ता हूं और इसे पुश करता हूं। छोटी आग। आप उन्हें तब तक पकड़ना चाहते हैं जब तक कि Googlebot उन URL पर पूरी तरह से हार न मान दे।

साथ ही, अपने सर्वर लॉग्स को चेक करो। सिर्फ GSC नहीं। Googlebot उन URLs को विज़िट करता है जो कहीं लिंक नहीं हैं, अपने खुद के historical crawl data के आधार पर। लॉग analysis (मैं छोटे सर्वर सेटअप पर quick reads के लिए GoAccess use करता हूँ) 404s को surface करता है जो GSC sometimes एक हफ्ता या उससे ज़्यादा टाइम में रिपोर्ट करता है।

---

FAQ

20,000 URLs के लिए redirect map बनाने में वास्तव में कितना समय लगता है?

असल में, दो से तीन हफ्तों की part-time effort का budget रखो, शायद कुल 40–60 घंटे इस बात पर निर्भर करते हुए कि पुरानी साइट की URL structure कितनी complicated है। Automated matching phase fast होता है। High-priority URLs की manual review और validation phase ज़्यादा टाइम लेते हैं। कभी न कहने दो कि यह "एक सप्ताहांत में" हो सकता है।

क्या मुझे हर एक URL को रीडायरेक्ट करना चाहिए, या कुछ 404 होने देना ठीक है?

यह ठीक है कि सत्यिक रूप से मृत, कोई ट्रैफिक न होने वाले, कोई backlink न होने वाले URLs को 404 प्राकृतिक रूप से होने दें। एक अप्रासंगिक पृष्ठ पर एक रीडायरेक्ट को मजबूर करना एक soft-404 सिग्नल बनाता है जो संभवतः बदतर है। निर्दयता से छँटाई करें। जो मायने रखता है उसे रीडायरेक्ट करें, और बाकी के लिए एक ठोस कस्टम 404 अनुभव में निवेश करें।

मुझे कौन सा redirect type use करना चाहिए, 301 या 302?

माइग्रेशन में लगभग सभी चीजों के लिए 301 (स्थायी)। एक 302 Google को बताता है कि स्थानांतर अस्थायी है और यह पुराने URL को इंडेक्स में संरक्षित रखेगा। मैंने एजेंसियों को 302 का उपयोग करते हुए देखा है "सुरक्षित रहने के लिए" और फिर पुराने डोमेन को रैंकिंग करते हुए देखा है जबकि नया महीनों तक stagnate होता है। 301 का उपयोग करें।

क्या मैं WordPress पर 20,000 रीडायरेक्ट को प्रबंधित करने के लिए एक प्लगइन का उपयोग कर सकता हूँ?

हाँ, लेकिन सावधानी से चुनें। Redirection by John Godley बड़े वॉल्यूम को अच्छी तरह संभालता है और नियमों को डेटाबेस में store करता है बजाय .htaccess के, जो स्केल पर performance के लिए बेहतर है। ~10,000 से ज़्यादा exact-match redirects के लिए, मैं फिर भी pattern-based नियमों को server config में माइग्रेट करने की सिफारिश करूँगा बजाय पूरी तरह एक प्लगइन पर निर्भर रहने के।Redirection by John Godley handles large volumes well and stores rules in the database rather than .htaccess, which is better for performance at scale. For anything above ~10,000 exact-match redirects, I'd still recommend migrating pattern-based rules to server config rather than relying entirely on a plugin.

बड़े माइग्रेशन पर टीमें सबसे आम गलती क्या करती हैं?

Redirect map को बहुत देरी से शुरू करना। मैं यह लगातार देखता हूँ, dev work 90% done है, लॉन्च दो हफ्तों दूर है, और कोई पूछता है "तो redirects के बारे में क्या?" उस समय तुम scramble कर रहे हो और inevitably चीजें miss कर रहे हो। Redirect map को नई साइट की URL structure confirm होते ही build किया जाना चाहिए। Parallel workstream, कोई afterthought नहीं।

---

तीन हफ्ते की देरी, एक बोतल स्कॉच, 94% ट्रैफिक रिटेंशन। इसे सही तरीके से करने की गणित काफी सीधी है।

Redirect map migration का glamorous part नहीं है। कोई इसे case study hero banner में नहीं डालता। लेकिन यह एक migration और एक recovery के बीच का अंतर है, और मुझे पता है कि मैं किसके लिए बिल करना पसंद करूँ।

< BACK