HTTP पुनर्निर्देशन: 301(स्थायी) बनाम 302(अस्थायी)




redirect http-status-code-301 (5)

स्थिति 301 का अर्थ है कि संसाधन (पृष्ठ) स्थायी रूप से एक नए स्थान पर स्थानांतरित हो जाता है। क्लाइंट / ब्राउजर को मूल स्थान का अनुरोध करने का प्रयास नहीं करना चाहिए, लेकिन अब से नए स्थान का उपयोग करना चाहिए।

स्थिति 302 का अर्थ है कि संसाधन अस्थायी रूप से कहीं और स्थित है, और क्लाइंट / ब्राउज़र को मूल यूआरएल का अनुरोध करना जारी रखना चाहिए।

क्या ग्राहक अलग व्यवहार करना चाहता है? कैसे?


खोज इंजन में अनुक्रमण के लिए अधिकतर 301 बनाम 302 महत्वपूर्ण है, क्योंकि उनके क्रॉलर इसे ध्यान में रखते हैं और 301 का उपयोग करते समय पेजरैंक स्थानांतरित करते हैं।

अधिक जानकारी के लिए पीटर ली का जवाब देखें।


301 यह है कि अनुरोधित संसाधन को एक नया स्थायी यूआरआई सौंपा गया है और इस संसाधन के भविष्य के संदर्भों को लौटाए गए यूआरआई में से एक का उपयोग करके किया जाना चाहिए। 302 यह है कि अनुरोधित संसाधन अस्थायी रूप से एक अलग यूआरआई के तहत रहता है। चूंकि पुनर्निर्देशन अवसर पर बदला जा सकता है, इसलिए ग्राहक भविष्य के अनुरोधों के लिए अनुरोध-यूआरआई का उपयोग करना जारी रखेगा। कैश-कंट्रोल या हेडर फ़ील्ड समाप्त होने पर यह प्रतिक्रिया केवल कैच करने योग्य है।


301 रीडायरेक्ट अनिश्चित काल तक कैश किए जाते हैं (कम से कम कुछ ब्राउज़रों द्वारा)।

इसका अर्थ यह है कि, यदि आप एक 301 सेट अप करते हैं, तो उस पृष्ठ पर जाएं, आपको न केवल रीडायरेक्ट किया जाता है, लेकिन वह पुनर्निर्देशन कैश हो जाता है।

जब आप उस पृष्ठ पर फिर से जाते हैं, तो आपका ब्राउज़र * उस यूआरएल का अनुरोध करने के लिए भी परेशान नहीं होता है, यह सिर्फ कैश किए गए पुनर्निर्देशन लक्ष्य पर जाता है।

कैश में उस पुनर्निर्देशन के साथ विज़िटर के लिए 301 को पूर्ववत करने का एकमात्र तरीका, मूल URL पर वापस रीडायरेक्ट कर रहा है **। उस स्थिति में, ब्राउज़र लूप को नोटिस करेगा, और अंत में वास्तव में दर्ज यूआरएल का अनुरोध करेगा।

जाहिर है, यह विकल्प नहीं है यदि आपने फेसबुक या 3 अन्य संसाधनों का निर्णय लिया है जो आप पूरी तरह से नियंत्रण में नहीं हैं।

दुर्भाग्यवश, कई होस्टिंग प्रदाता अपने व्यवस्थापक इंटरफ़ेस में एक सुविधा प्रदान करते हैं जिसे "रीडायरेक्शन" कहा जाता है, जो 301 रीडायरेक्ट करता है। यदि आप जल्द ही आने वाले पृष्ठ के रूप में अपने डोमेन को अस्थायी रूप से रीडायरेक्ट करने के लिए इसका उपयोग कर रहे हैं, तो आप मूल रूप से खराब हो जाते हैं।

* कम से कम क्रोम और फ़ायरफ़ॉक्स, ब्राउज़र कितने समय तक HTTP 301s कैश करते हैं? । बस इसे क्रोम 45 के साथ आज़माएं। संपादित करें: मैक पर सफारी 7.0.6 भी कैश करता है, ब्राउज़र रीस्टार्ट मदद नहीं करता है (लिंक कहता है कि विंडोज़ पर सफारी 5 पर यह मदद करता है।)

** मैंने जावास्क्रिप्ट window.location = '' की कोशिश window.location = '' , क्योंकि यह समाधान होगा जो ज्यादातर मामलों में लागू किया जा सकता है - यह काम नहीं करता है। इसका परिणाम एक ज्ञात अनंत लूप में होता है। हालांकि, PHP header('Location: new.url') लूप को तोड़ देता है

निचली पंक्ति: केवल 301 का उपयोग करें यदि आप पूरी तरह से सुनिश्चित हैं कि आप कभी भी उस यूआरएल का उपयोग नहीं करेंगे। आमतौर पर रूट डीआईआर (example.com/) पर कभी नहीं


जब एक खोज इंजन स्पाइडर को वेबपृष्ठ के प्रतिक्रिया शीर्षलेख में 301 स्थिति कोड मिल जाता है, तो यह समझता है कि यह वेबपृष्ठ अब मौजूद नहीं है, यह प्रतिक्रिया में स्थान शीर्षलेख की खोज करता है, नए यूआरएल को चुनता है और अनुक्रमित यूआरएल को नए से बदलता है और पेजरैंक को स्थानांतरित करता है ।

तो खोज इंजन सभी अनुक्रमित यूआरएल को रीफ्रेश करता है जो अब नए यूआरएल के साथ मौजूद नहीं है (301 मिला), यह आपके पुराने वेबपेज यातायात, पेजरैंक को बनाए रखेगा और इसे नए पर बदल देगा (आप पुराने वेबपृष्ठ के ट्रैफिक को नहीं खो देंगे)।

ब्राउज़र: यदि किसी ब्राउज़र को 301 स्टेटस कोड मिल जाता है तो यह नए यूआरएल के साथ पुराने यूआरएल के मैपिंग को कैश करता है, क्लाइंट / ब्राउजर मूल स्थान का अनुरोध करने का प्रयास नहीं करेगा, लेकिन कैश साफ़ होने तक अब से नए स्थान का उपयोग करेगा।

जब कोई खोज इंजन स्पाइडर किसी वेबपृष्ठ के लिए 302 स्थिति पाता है, तो यह केवल अस्थायी रूप से नए स्थान पर रीडायरेक्ट करेगा और दोनों पृष्ठों को क्रॉल करेगा। पुराना वेबपृष्ठ यूआरएल अभी भी खोज इंजन डेटाबेस में मौजूद है और यह हमेशा पुराने स्थान का अनुरोध करने और इसे क्रॉल करने का प्रयास करता है। ग्राहक / ब्राउज़र अभी भी मूल स्थान का अनुरोध करने का प्रयास करेगा।

एएसपीनेट सी # में इसे कार्यान्वित करने के तरीके के बारे में और पढ़ें और खोज इंजन पर असर क्या है - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html स्थायी- vs-302- समकालीन- स्टेटस-code- http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html





http-status-code-302