301-vs-302-vs-307-vs-308-redirect-guide-2026.html
< BACK

301 vs 302 vs 307 vs 308: SEO माइग्रेशन के लिए रीडायरेक्ट कोड निर्णय मैट्रिक्स

चार HTTP रीडायरेक्ट कोड, चार सार्थक अलग-अलग व्यवहार, और एक सामान्य SEO गलती जो हर माइग्रेशन में दिखाई देती है: 302 पर डिफ़ॉल्ट करना क्योंकि यह वह है जो फ्रेमवर्क उत्सर्जित करता है। यहाँ 301 vs 302 vs 307 vs 308 के लिए वास्तविक निर्णय मैट्रिक्स है, साथ ही गलत होने की वास्तविक लागत।

एक वाक्य में चारों कोड

301 Moved Permanently: विहित स्थायी रीडायरेक्ट। कैशेबल। विधि POST से GET में बदल सकती है। स्थायी URL चाल के लिए डिफ़ॉल्ट।

302 Found: अस्थायी रीडायरेक्ट। कैशेबल लेकिन पुनः सत्यापन के साथ। विधि POST से GET में बदल सकती है। फ्रेमवर्क द्वारा डिफ़ॉल्ट के रूप में उपयोग किया जाता है; SEO स्थायी चालों के लिए लगभग कभी सही नहीं।

307 Temporary Redirect: 302 की तरह लेकिन विधि संरक्षित है। POST POST रहता है। अस्थायी चालों के लिए जहाँ विधि मायने रखती है (मार्केटिंग-साइट SEO में दुर्लभ; API में सामान्य)।

308 Permanent Redirect: 301 की तरह लेकिन विधि संरक्षित है। POST POST रहता है। HTTP/2-युग का 301 के लिए प्रतिस्थापन जब विधि संरक्षण मायने रखता है। आधुनिक फ्रेमवर्क (Next.js, Vercel) redirect() कॉल के लिए डिफ़ॉल्ट रूप से 308 उत्सर्जित करते हैं।

SEO के लिए यह क्यों महत्वपूर्ण है

Google ने सार्वजनिक रूप से कहा है कि 301 और 308 दोनों पूरा PageRank सिग्नल ट्रांसफर करते हैं। 302 और 307 कम विश्वसनीयता से ट्रांसफर करते हैं — Google की व्याख्या में यह धारणा बनी होती है कि एक अस्थायी रीडायरेक्ट एक अस्थायी गंतव्य की ओर इशारा करता है, इसलिए कैनोनिकल सिग्नल को मूल URL पर रहना चाहिए। माइग्रेशन के दौरान, यह बिल्कुल गलत है: आप चाहते हैं कि कैनोनिकल सिग्नल आगे बढ़े।

वास्तविक दुनिया का प्रभाव: एक साइट जो माइग्रेशन रीडायरेक्ट को 301 की जगह 302 के रूप में भेजती है, आमतौर पर कटओवर के बाद पहले 60 दिनों में 20-40% ऑर्गेनिक ट्रैफिक खो देती है। समाधान सूक्ष्म नहीं है, लेकिन यह हमेशा पकड़ा भी नहीं जाता क्योंकि 302s यूजर्स के लिए काम करते हैं (ब्राउज़र उन्हें फॉलो करता है, पेज लोड होता है)। Search Console समस्या को Coverage रिपोर्ट में "Page with redirect" के तहत फ्लैग करता है लेकिन अधिकांश टीमें कटओवर के बाद की घबराहट में उस रिपोर्ट को नज़रअंदाज़ करते हैं।

निर्णय मैट्रिक्स

तीन सवाल। उन्हें क्रम में उत्तर दें; परिणाम कोड निर्धारित करता है।

सवाल 1: क्या यह मूव स्थायी है?

अगर हाँ (URL हमेशा के लिए मूव हो रहा है, पुराना URL वापस नहीं आएगा): 301 या 308 का उपयोग करें। अगर नहीं (URL वापस आएगा, यह अस्थायी है): 302 या 307 का उपयोग करें।

सवाल 2: क्या URL को POST अनुरोध मिल रहे हैं?

अगर हाँ (फॉर्म सबमिशन, API कॉल, JSON POST): 307 या 308 का उपयोग करें (मेथड संरक्षित)। अगर नहीं (ब्राउज़र नेविगेशन, लिंक क्लिक): 302 या 301 ठीक हैं।

सवाल 3: फ्रेमवर्क डिफ़ॉल्ट रूप से क्या करता है?

आधुनिक stacks: Next.js redirect() डिफ़ॉल्ट रूप से 308 भेजता है, vercel.json [[redirects]] 308 का उपयोग करते हैं जब तक permanent: false सेट न हो, Netlify _redirects डिफ़ॉल्ट रूप से 301 का उपयोग करते हैं जब तक स्पष्ट रूप से अन्यथा न कहा जाए। Apache mod_rewrite डिफ़ॉल्ट रूप से 302 का उपयोग करता है जो पहली बार सभी को पकड़ता है। अपने framework के डिफ़ॉल्ट पर निर्भर करने से पहले हमेशा जाँच लें।

चार सबसे आम गलतियाँ

  • Apache/Express/Flask द्वारा redirect() helper के लिए डिफ़ॉल्ट के रूप में उत्सर्जित किए जाने के कारण 302 को डिफ़ॉल्ट करना। समाधान: permanent move पर हर redirect rule में स्पष्ट रूप से 301 सेट करें।
  • 307 का उपयोग करना यह सोचकर कि यह आधुनिक 301 है। यह नहीं है — 307 आधुनिक 302 है (अस्थायी, method-preserving)। Permanent moves के लिए 308 या 301 का उपयोग करें।
  • एक ही redirect map में 301 और 302 को मिलाना। एक चुनें (migrations के लिए 301) और इसे हर जगह उपयोग करें; mixed codes Search Console की reporting को भ्रमित करते हैं।
  • भूलना कि 308 POST method को preserve करता है। अगर आपका पुराना URL एक form submission endpoint था और आप इसे 308 के साथ नए URL पर भेजते हैं, तो POST data प्रवाहित होता है। अगर आप इसे 301 के साथ भेजते हैं, तो ब्राउज़र POST को GET में बदल देता है और form submission खो जाता है। अंतर को जानना एक real bug class को पकड़ता है।

किन परिस्थितियों में कौन सा उपयोग करें

Migration redirects (old domain → new domain, old slug → new slug): 301 का उपयोग करें। सबसे सरल, सबसे व्यापक रूप से समर्थित, और Google द्वारा स्पष्ट रूप से full PageRank transfer के रूप में कहा गया।

Permanent moves जहाँ method preservation महत्वपूर्ण है (POST endpoints, form submissions): 308 का उपयोग करें। PageRank transfer 301 के समान है; एकमात्र अंतर यह है कि POST, POST ही रहता है।

Temporary moves (A/B testing, geographic redirects, maintenance): 302 का उपयोग करें। Lower-PageRank-transfer सही व्यवहार है क्योंकि source URL को अपना ranking signal retain करना चाहिए।

विधि संरक्षण के साथ अस्थायी स्थानांतरण (अस्थायी फेलओवर के तहत API एंडपॉइंट्स): 307 का उपयोग करें।

सामान्य प्लेटफॉर्म्स पर प्रत्येक कोड कैसे सेट करें

Vercel (vercel.json)

[[redirects]] ब्लॉक। permanent: true सेट करें 308 के लिए (डिफ़ॉल्ट), permanent: false सेट करें 307 के लिए। 301 को फोर्स करने के लिए statusCode: 301 स्पष्ट रूप से सेट करें। अधिकांश आधुनिक Vercel डिप्लॉयमेंट्स डिफ़ॉल्ट रूप से 308 का उपयोग करते हैं जो माइग्रेशन के लिए ठीक है; SEO-सावधानीपूर्वक चुनाव पुरानी क्रॉलर्स और इंडेक्सर्स के साथ अधिकतम संगतता के लिए 301 है।

Netlify (netlify.toml या _redirects)

_redirects सिंटैक्स: स्थायी के लिए /old-url /new-url 301, अस्थायी के लिए /old-url /new-url 302। स्थिति को फोर्स करने के लिए ! जोड़ें: /old-url /new-url 301!।

Apache (.htaccess)

स्थायी के लिए Redirect 301 /old-url /new-url। रीराइट-शैली रीडायरेक्ट्स के लिए [R=301,L] फ्लैग के साथ RewriteRule।

Nginx

एक location ब्लॉक के अंदर return 301 https://example.com/new-url;। पैटर्न मिलान के लिए: rewrite ^/old/(.*)$ /new/$1 permanent; (permanent फ्लैग 301 उत्सर्जित करता है; redirect फ्लैग 302 उत्सर्जित करता है)।

उत्पादन में कोड्स की पुष्टि करना

तीन कमांड जो हर इंजीनियर को मांसपेशी स्मृति में रखने चाहिए। curl -I https://example.com/old-url रेस्पांस हेडर्स में स्टेटस कोड रिटर्न करता है। curl -ILk रीडायरेक्ट्स को फॉलो करता है और हर रास्ते में हर स्टेटस कोड को लॉग करता है (चेन्स को पकड़ता है)।

सैकड़ों URLs में बल्क सत्यापन के लिए, स्क्रिप्टेबल: एक Node.js फेच लूप जो पुराने URLs की CSV को पढ़ता है और स्टेटस + अंतिम गंतव्य को लॉग करता है। या DataForSEO ऑन-पेज इंस्टेंट पेजेस एंडपॉइंट का उपयोग करें, जो पूरी रीडायरेक्ट ट्रेस रिटर्न करता है।

सारांश

301 स्थायी चालों के लिए (SEO माइग्रेशन के लिए डिफ़ॉल्ट)। 308 जब मेथड प्रिज़र्वेशन मायने रखती है और चाल स्थायी है। 302 अस्थायी चालों के लिए। 307 मेथड प्रिज़र्वेशन के साथ अस्थायी चालों के लिए। फ्रेमवर्क डिफ़ॉल्ट हमेशा सही नहीं होते; डिप्लॉय करते समय उन्हें चेक करें।

संबंधित पाठ: 410 बनाम 404 सेवानिवृत्ति के मामले को कवर करता है (URLs जो हमेशा के लिए खत्म हो रहे हैं, स्थानांतरित नहीं हो रहे)। आमतौर पर एक ही माइग्रेशन को दोनों निर्णयों की जरूरत होती है।

< BACK