Google 404 और 410 को अलग तरीके से मानता है, और यह अंतर तब मायने रखता है जब आप URLs को बल्क में रिटायर कर रहे हों। संक्षिप्त संस्करण: 404 कहता है "गायब, बाद में फिर से कोशिश करें"; 410 कहता है "चला गया, कभी वापस नहीं आएगा"। Googlebot 404s को इंडेक्स से हटाने से पहले हफ्तों तक फिर से विजिट करता है। यह 410s को दिनों में हटा देता है। अगर आप माइग्रेशन के बीच में हैं और हजारों URLs को देख रहे हैं जो हमेशा के लिए गायब हो जाने चाहिए, तो सही कोड चुनने से क्लीनअप में हफ्तों का समय बचता है।
हर एक कोड का असल मतलब
404 Not Found डिफ़ॉल्ट रिस्पांस है जब कोई रिसोर्स अनुरोधित URL पर मौजूद नहीं है। सर्वर कह रहा है "इस URL पर अभी कोई रिसोर्स नहीं है"। इसका मतलब अनुमतिशील है: शायद URL के पास बाद में रिसोर्स होगा, शायद यह एक टाइपो है, शायद रिसोर्स स्थानांतरित हुआ है और किसी ने रीडायरेक्ट भेजना भूल गया। 404 एक व्यापक जाल है।
410 Gone स्पष्ट रिटायरमेंट कोड है। सर्वर कह रहा है "इस URL के पास एक रिसोर्स था, इसे स्थायी रूप से हटा दिया गया है, फिर से न पूछें"। यह दरवाजा बंद करने का संकेत है। Google इसे स्पष्ट रूप से दस्तावेज करता है: 410 को 404 की तुलना में URL को इंडेक्स से हटाने के लिए एक मजबूत संकेत के रूप में व्याख्या किया जाता है।
Googlebot हर एक को कैसे मानता है
404 व्यवहार। Googlebot को 404 का सामना करता है, URL को गायब के रूप में चिह्नित करता है, लेकिन इसे क्रॉल क्यू में रखता है। बॉट धीमी गति से शेड्यूल पर URL को फिर से विजिट करता है (24h, फिर 7d, फिर 30d, फिर 90d)। अगर URL अंततः फिर से 200 वापस करता है, तो इसे बहाल किया जाता है। चक्र महीनों तक जारी रहता है। URL Search Console की कवरेज रिपोर्ट में "Not found (404)" के अंतर्गत रहता है।
410 व्यवहार। Googlebot को 410 मिलता है, URL को स्थायी रूप से सेवानिवृत्त के रूप में चिह्नित करता है, कुछ दिनों में इसे इंडेक्स से हटा देता है। URL, Search Console में "कानूनी शिकायत के कारण पृष्ठ हटाया गया" या "Soft 404" के तहत संक्षेप में दिखाई देता है, यह Google की व्याख्या पर निर्भर करता है, फिर गायब हो जाता है। क्रॉल कतार इसे फिर से विज़िट करना बंद कर देती है।
कार्यात्मक अंतर दिनों बनाम महीनों का इंडेक्स प्रदूषण है।
404 पर 410 कब चुनें
- माइग्रेशन क्लीनअप: URL जो नई साइट में अब मौजूद नहीं हैं और कोई शब्दार्थ समतुल्य नहीं है। 410 का उपयोग करें। वे चले गए हैं।
- हटाए गए ब्लॉग पोस्ट: पुरानी सामग्री जिसे आपने जानबूझकर सेवानिवृत्त किया है। 410 यदि आप आश्वस्त हैं; 404 यदि पोस्ट उसी स्लग के तहत वापस आने की कोई संभावना है।
- डिकमीशन किए गए उत्पाद पृष्ठ: SKU जो आप अब नहीं बेचते। 410 यदि उत्पाद स्थायी रूप से सेवानिवृत्त है; 404 यदि यह वापस आ सकता है।
- URL पैटर्न सेवानिवृत्ति: उदा. /forum/* को सेवानिवृत्त करना क्योंकि फोरम को डिकमीशन कर दिया गया था। पूरे पथ को 410 दें।
- पिछले हैक या CMS त्रुटियों से जंक URL जो किसी तरह इंडेक्स में समाप्त हो गए हैं। 410।
जब 404 सही पसंद है
- टाइपो और कभी-मौजूद नहीं URL: 404 परंपरागत प्रतिक्रिया है। 410 गलत होगा क्योंकि URL के पास शुरुआत में कोई सामग्री नहीं थी।
- पुनः प्रकाशित करने के लिए समीक्षा में सामग्री: यदि URL वापस आ सकता है, तो 404 Google को इसे फिर से खोजने का दरवाजा खुला रखता है।
- अस्थायी रूप से अनुपलब्ध पृष्ठ: 404 यहाँ भी गलत है — Retry-After हेडर के साथ 503 का उपयोग करें। लेकिन उसके बिना, अस्पष्ट मामलों के लिए 404 सुरक्षित डिफ़ॉल्ट है।
सामान्य प्लेटफ़ॉर्मों पर 410 कैसे सेट करें
Vercel (vercel.json)
एक rewrite या status code नियम जोड़ें। सबसे स्वच्छ पैटर्न एक /410 endpoint भेजना और statusCode 410 के साथ सेवानिवृत्त URLs को इसे फिर से लिखना है। नोट करें कि vercel.json मूलतः redirects का समर्थन करता है, न कि arbitrary URLs के लिए status-code rewrites; पैटर्न Next.js middleware का उपयोग करना है जो आपकी सेवानिवृत्ति सूची में किसी भी URL के लिए new Response(null, { status: 410 }) देता है।
Netlify (netlify.toml या _redirects)
_redirects सिंटैक्स का उपयोग करें: /retired-url 410! — अनुगामी विस्मयादिबोधक चिह्न force-status फ़्लैग है। या netlify.toml में, status = 410 के साथ एक [[redirects]] ब्लॉक का उपयोग करें।
Apache (.htaccess)
Redirect gone /retired-url — या RewriteRule को [G] फ़्लैग के साथ उपयोग करें: RewriteRule ^retired-url$ - [G,L]।
Nginx
location ब्लॉक के अंदर URL पैटर्न से मेल खाते हुए `return 410;` लिखें। बल्क पैटर्न के लिए: `location ~ ^/old-pattern/ { return 410; }`।
यह बड़े पैमाने पर क्यों मायने रखता है
एक साइट जिसके पास 10,000 रिटायर किए गए URLs हैं और वे 50/50 के अनुपात में 404 और 410 के बीच बंटे हुए हैं, वह 410 वाले हिस्से को Coverage रिपोर्ट से दो हफ्तों में गायब हो जाते देखेगा, जबकि 404 वाला हिस्सा तीन से छह महीनों तक Coverage रिपोर्ट में भटकता रहेगा। 404 सेट Googlebot के क्रॉल बजट को खा जाता है जो आपके उन URLs के लिए चाहिए जिन्हें आप इंडेक्स कराना चाहते हैं। बड़ी साइटों पर यह बजट का असर मापा जा सकता है: रिटायरमेंट के लिए कम बजट मतलब नई कंटेंट के लिए ज्यादा बजट।
माइग्रेशन पैटर्न
किसी भी माइग्रेशन क्लीनअप के लिए तीन स्टेप हैं। पहला: Search Console, Ahrefs, और पुरानी sitemap से हर URL निकालें। दूसरा: हर URL को चार बकेट्स में से किसी एक में डालें: (a) नए URL पर मैप होता है → 301 redirect, (b) नए slug पर रीनेम हुआ → 301, (c) स्थायी रूप से रिटायर → 410, (d) अनिश्चित स्थिति → 404। तीसरा: नई कंटेंट के साथ एक ही डिप्लॉय में redirect/410/404 रूल्स को vercel.json या .htaccess में भेजें, साथ ही एक बिल्ड-टाइम SEO लिंटर भी डालें जो बिल्ड को फेल कर दे अगर कोई प्री-माइग्रेशन URL रूल सेट से गायब हो।
जानने लायक: 451 कोड
451 Unavailable For Legal Reasons उस कंटेंट के लिए है जिसे हटाने का कानूनी आदेश आपको दिया गया है। यह दुर्लभ और विशिष्ट है — DMCA takedowns, GDPR right-to-erasure जब URL पूरी तरह रिटायर हो जाए, कोर्ट के आदेश। Google इसे 410 की तरह ही समझता है (इंडेक्स से निकल जाता है) लेकिन कानूनी संकेत वही है जो मायने रखता है। इसे केवल तभी इस्तेमाल करें जब कानूनी संदर्भ लागू हो।
सारांश
स्थायी रिटायरमेंट के लिए 410 इस्तेमाल करें। सच में गायब या अनिश्चित कंटेंट के लिए 404 इस्तेमाल करें। दो हफ्तों बनाम छह महीनों का इंडेक्स-क्लीनअप अंतर कुछ हजार URLs से ऊपर हर माइग्रेशन पर दिखता है। फिक्स vercel.json, netlify.toml, या .htaccess में एक रूल है। लॉन्च के समय इसे सही करें और आप उस पोस्ट-लॉन्च क्लीनअप को बचा लेते हैं जिसके लिए कोई बजट नहीं रखता।
संबंधित पढ़ाई: 301 vs 302 vs 307 vs 308 उन URLs के लिए संबंधित निर्णय है जो रिटायर नहीं हुए बल्कि सिर्फ मूव हुए हैं। वही माइग्रेशन क्लीनअप जिसे 410 चाहिए, उसे रीडायरेक्ट-कोड निर्णय भी चाहिए; उस फ्रेम के लिए रीडायरेक्ट स्ट्रेटेजी पोस्ट देखें।