के बीच क्या अंतर Redirect()
है और RedirectPermanent()
। मैं कुछ लेख पढ़ा था, लेकिन मुझे समझ नहीं आता है जब हम का उपयोग करना चाहिए Redirect()
और RedirectPermanent()
। क्या आप उदाहरण के टुकड़े दिखा सकते हैं।
जवाबों:
दोनों के बीच मूल अंतर यह है कि RedirectPermanent
ब्राउज़र को एक HTTP 301
(स्थायी रूप से) स्थिति कोड भेजता है जबकि Redirect
एक HTTP 302
स्थिति कोड भेजेगा ।
उपयोग करें RedirectPermanent
यदि संसाधन स्थायी रूप से ले जाया गया है और अब अपने पिछले स्थान में सुलभ नहीं होगा। अधिकांश ब्राउज़र इस प्रतिक्रिया को कैश करेंगे और फिर से मूल संसाधन का अनुरोध किए बिना स्वचालित रूप से रीडायरेक्ट करेंगे।
Redirect
यदि संसाधन भविष्य में उसी स्थान (URL) में उपलब्ध हो सकता है, तो उपयोग करें ।
उदाहरण
मान लीजिए कि आपके सिस्टम में उपयोगकर्ता हैं। आपके पास मौजूदा उपयोगकर्ताओं को हटाने का एक विकल्प भी है। आपकी वेबसाइट में एक संसाधन है /user/{userid}
जो किसी दिए गए उपयोगकर्ता के विवरण को प्रदर्शित करता है। यदि उपयोगकर्ता हटा दिया गया है, तो आपको /user/does-not-exist
पृष्ठ पर पुनर्निर्देशित करना होगा । इस मामले में:
यदि उपयोगकर्ता को फिर से बहाल नहीं किया जाएगा, तो आपको इसका उपयोग करना चाहिए RedirectPermanent
ताकि ब्राउज़र सीधे /user/does-not-exist
बाद के अनुरोधों में जा सके, भले ही यूआरएल इंगित करता हो /user/{userid}
।
यदि उपयोगकर्ता को भविष्य में बहाल किया जा सकता है, तो आपको एक नियमित उपयोग करना चाहिए Redirect
।
RedirectPermanent
डिबगिंग करते समय कष्टप्रद हो सकता है क्योंकि दूसरी बार जब आप क्लिक करते हैं, तो नियंत्रक की कार्रवाई को छोड़ दिया जाएगा और मूल फ़ंक्शन में कोई विराम बिंदु नहीं पहुंचता है यदि यह कहीं और पुनर्निर्देशित करता है। जब तक आप हर क्लिक से पहले अपना कैश खाली नहीं करते।
RedirectPermanent
301 है और Redirect
302 स्टेटस कोड है
वे ब्राउज़र में विभिन्न प्रतिक्रिया कोड भेजते हैं। 301 एक स्थायी पुनर्निर्देशित, 302 एक अस्थायी एक है। अंतिम प्रभाव समान है, लेकिन अगर ग्राहक लिंक को लिंक करना चाहता है (सबसे आम क्लाइंट जो ऐसा करता है तो वह सर्च इंजन होगा) तो एक स्थायी रीडायरेक्ट ग्राहक को पुराने लिंक को अनदेखा करने और नए का उपयोग शुरू करने के लिए अपने रिकॉर्ड को अपडेट करने के लिए कहता है। । एक अस्थायी पुनर्निर्देशन क्लाइंट को बताता है कि पृष्ठ अभी के लिए पुनर्निर्देशित हो रहा है, लेकिन अपने अनुक्रमण डेटाबेस से पुराने लिंक को हटाने के लिए नहीं