Orbit

रीडायरेक्ट्स और रीराइट्स को कॉन्फ़िगर करना

Orbit has a built-in redirect and rewrite engine that runs before your project is asked for anything, configured either in KPanel or as a file in your repository. This guide covers both, the pattern…

Orbit में एक अंतर्निर्मित रीडायरेक्ट और रीराइट इंजन है जो आपके प्रोजेक्ट से कुछ माँगे जाने से पहले चलता है, जिसे KPanel में या आपके रिपोजिटरी में एक फ़ाइल के रूप में कॉन्फ़िगर किया जा सकता है। यह गाइड दोनों को कवर करती है, पैटर्न सिंटैक्स और इसके कैप्चर, नियमों का क्रम, सीमाएँ, और व्यवहार जो लोगों को भ्रमित करता है।

नियमों को कहाँ कॉन्फ़िगर करें

दो जगहें हैं, और उनका मूल्यांकन एक निश्चित क्रम में होता है।

  1. KPanel में। अपने प्रोजेक्ट को Orbit में खोलें, Settings पर जाएँ, और पर्यावरण के लिए redirects and rewrites सेक्शन तक स्क्रॉल करें। प्रत्येक पर्यावरण के अपने स्वतंत्र नियमों का सेट होता है, इसलिए प्रोडक्शन और स्टेजिंग को अलग से कॉन्फ़िगर किया जाता है।
  2. आपके रिपोजिटरी में, kaps.json फ़ाइल के रूप में। यह आगे कवर किया गया है।

पैनल नियमों का मूल्यांकन पहले किया जाता है। यदि उनमें से कोई मेल नहीं खाता है, तो kaps.json नियमों का प्रयास किया जाता है।

Orbit प्रोजेक्ट सेटिंग्स में रीडायरेक्ट और रीराइट सेक्शन

KPanel में एक नियम जोड़ना

  1. Add rule पर क्लिक करें।
  2. source भरें, आने वाले अनुरोधों के विरुद्ध मेल खाने के लिए पथ पैटर्न। प्लेसहोल्डर दो आकार दिखाता है जो यह अपेक्षा करता है: /old-path or /blog/:slug
  3. destination भरें। प्लेसहोल्डर /new-path or https://... दिखाता है, इसलिए एक स्थानीय पथ और एक पूर्ण बाहरी URL दोनों मान्य हैं।
  4. नियम प्रकार चुनें:
    • 301 Permanent: URL हमेशा के लिए चला गया है। ब्राउज़र और सर्च इंजन इसे कैश करते हैं।
    • 302 Temporary: अभी के लिए चला गया है, कैश नहीं किया गया। अभियानों और प्रयोगों के लिए उपयोग करें।
    • Rewrite: गंतव्य पथ को परोसें बिना ब्राउज़र के पता बार में URL बदले।
  5. Save rules पर क्लिक करें।

नियम अगले deployment से प्रभावी होते हैं, तुरंत नहीं। एक नियम को सहेजना वर्तमान में लाइव डिप्लॉयमेंट को परोसे जाने वाले को नहीं बदलता है। सहेजने के बाद पुनः तैनात करें, अन्यथा आपके नियम काम न करते प्रतीत होंगे।

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

स्रोत पथ पैटर्न

पैटर्नमेल खाता हैकैप्चर
/old-pageबिल्कुल /old-pageकुछ नहीं
/blog/*कुछ भी शुरू होने वाली /blog/पथ का बाकी हिस्सा, गंतव्य में * के रूप में संदर्भित
/posts/:id/posts/ और एक पथ खंडवह खंड, :id के रूप में
/files/:rest*/files/ और इसके बाद सब कुछ, स्लैश सहितपूरी शेष, :rest के रूप में

:id और :rest* के बीच का अंतर महत्वपूर्ण है। एक नामित पैरामीटर एक एकल खंड से मेल खाता है और अगले स्लैश पर रुकता है। एक splat सब कुछ शेष से मेल खाता है, स्लैश सहित।

गंतव्य में कैप्चर का उपयोग करना

एक नामित पैरामीटर को नाम से संदर्भित करें, और एक बेयर वाइल्डकार्ड को * के रूप में संदर्भित करें:

स्रोतगंतव्यपरिणाम
/blog/:slug/articles/:slug/blog/hello-world /articles/hello-world बन जाता है
/docs/:rest*/help/:rest*/docs/a/b/c /help/a/b/c बन जाता है
/old/*/new/*/old/a/b /new/a/b बन जाता है

नियमों का क्रम

नियमों को ऊपर से नीचे तक परीक्षण किया जाता है और पहला मेल जीतता है। एक बार जब कोई नियम मेल खाता है, तो बाद के किसी नियम पर विचार नहीं किया जाता है। पैनल सूची के नीचे कहता है: "नियमों को क्रम में परीक्षण किया जाता है। पहला मेल जीतता है।"

विशिष्ट नियमों को सामान्य नियमों के ऊपर रखें। /blog/* नियम /blog/2023/:slug के ऊपर रखा गया हर अनुरोध को निगल जाएगा जो अधिक विशिष्ट नियम को संभालने का उद्देश्य था, और ऐसा लगेगा कि विशिष्ट नियम बस टूटा हुआ है।

यदि कोई नियम मेल नहीं खाता है, तो अनुरोध सामान्य रूप से परोसा जाता है।

सामान्य उपयोग के मामले

एक पृष्ठ का नाम बदलना

आपने /about-us का नाम बदलकर /about कर दिया और पुरानी लिंक को काम करते रहना चाहते हैं।

  • स्रोत: /about-us
  • गंतव्य: /about
  • प्रकार: 301 Permanent

पूरे सेक्शन को स्थानांतरित करना

आपका ब्लॉग /news/:slug से /blog/:slug में चला गया।

  • स्रोत: /news/:slug
  • गंतव्य: /blog/:slug
  • प्रकार: 301 Permanent

एक API पथ को चुप्पी से प्रॉक्सी करना

आप /api/v1/* को एक अलग आंतरिक पथ से परोसा गया चाहते हैं बिना परिवर्तन को उजागर किए।

  • स्रोत: /api/v1/:path*
  • गंतव्य: /api/internal/:path*
  • प्रकार: Rewrite

एक अस्थायी होल्डिंग पृष्ठ

  • स्रोत: /checkout
  • गंतव्य: /maintenance
  • प्रकार: 302 Temporary

ट्रैफ़िक को किसी अन्य डोमेन पर भेजना

गंतव्य एक पूर्ण URL हो सकता है, इसलिए एक नियम पूरी तरह से एक अलग साइट की ओर इशारा कर सकता है।

  • स्रोत: /shop/:rest*
  • गंतव्य: https://shop.example.com/:rest*
  • प्रकार: 301 Permanent

कोड के साथ कॉन्फ़िगरेशन kaps.json

नियम पैनल के बजाय आपकी रिपोजिटरी में रह सकते हैं। एक kaps.json फ़ाइल जोड़ें, और सुनिश्चित करें कि आपकी बिल्ड इसे आपकी output directory में कॉपी करे, क्योंकि Orbit इसे रिपोजिटरी रूट के बजाय बिल्ट आर्टिफ़ैक्ट की रूट से पढ़ता है।

{
  "redirects": [
    { "source": "/about-us", "destination": "/about", "permanent": true },
    { "source": "/news/:slug", "destination": "/blog/:slug", "permanent": true },
    { "source": "/promo", "destination": "/spring-sale", "permanent": false }
  ],
  "rewrites": [
    { "source": "/api/v1/:path*", "destination": "/api/internal/:path*" }
  ],
  "headers": [
    {
      "source": "/*",
      "headers": [
        { "key": "X-Frame-Options", "value": "DENY" },
        { "key": "X-Content-Type-Options", "value": "nosniff" }
      ]
    }
  ]
}

permanent: true एक 301 बनाता है और permanent: false एक 302 बनाता है। इसे छोड़ देने से 301 मिलता है।

kaps.json स्टेटिक डिप्लॉयमेंट केवल पर लागू होता है। यदि Server mode चालू है, तो आपका ऐप अपनी खुद की रूटिंग को संभालता है और फ़ाइल को अनदेखा किया जाता है। इसका मूल्यांकन पर्यावरण के पैनल नियमों के विफल होने के बाद ही किया जाता है, इसलिए एक पैनल नियम समान पथ के लिए एक फ़ाइल नियम को हमेशा हरा देता है।

kaps.json का उपयोग करें जब नियम कोड के साथ संबंधित हों, इसलिए उनकी pull request में समीक्षा की जाती है और रोलबैक के साथ चलते हैं। पैनल का उपयोग करें जब आपको बिना deploy के अभी एक नियम लाइव की आवश्यकता हो। दोनों स्थानों पर समान नियम को बनाए न रखें: पैनल नियम हमेशा जीतेगा और फ़ाइल नियम को अनदेखा किए जाने के लिए देखा जाएगा, जो ऐसा ही है।

सीमाएँ

  • प्रति पर्यावरण में 100 तक रीडायरेक्ट और रीराइट नियम, और kaps.json में 100।
  • प्रति पर्यावरण में 200 तक कस्टम हेडर नियम।

सीमा से परे नियमों को एक त्रुटि बढ़ाने के बजाय चुप्पी से छोड़ा जाता है, इसलिए इसके नीचे अच्छी तरह से रहें।

कस्टम प्रतिक्रिया हेडर

रीडायरेक्ट के साथ-साथ, प्रत्येक पर्यावरण के पास Settings में प्रतिक्रिया हेडर सेक्शन होता है जो मेलदार पथों पर HTTP हेडर को इंजेक्ट करने के लिए होता है। यह समान पथ पैटर्न सिंटैक्स का उपयोग करता है, और HSTS, CSP, no-embed, no-sniff, referrer policy और CORS के लिए त्वरित-जोड़ प्रीसेट हैं।

रीडायरेक्ट के विपरीत, सभी मेलदार हेडर नियम लागू किए जाते हैं, सिर्फ पहला नहीं, और एक बाद का नियम एक पहले के नियम को अधिलेखित करता है जब वे समान हेडर सेट करते हैं। Content-Length, Transfer-Encoding और Connection को अवरुद्ध किया जाता है, क्योंकि उन्हें सेट करने से प्रतिक्रिया को नुकसान होगा।

आपको भरोसा करने से पहले जानने लायक व्यवहार

क्वेरी स्ट्रिंग्स एक रीडायरेक्ट के पार नहीं किए जाते हैं। एक नियम मेल खाता है कि अनुरोध में क्वेरी स्ट्रिंग है या नहीं, लेकिन गंतव्य आपके टेम्पलेट और कैप्चर किए गए पथ खंडों से ही बनाया जाता है। /old?utm_source=email के लिए एक अनुरोध /new को रीडायरेक्ट करता है, पैरामीटर्स को छोड़ कर। यदि आप ट्रैकिंग पैरामीटर्स के जीवित रहने पर निर्भर करते हैं, तो इसके बजाय एक edge function में रीडायरेक्ट को संभालें, जहाँ आप गंतव्य URL को पूरी तरह से नियंत्रित करते हैं।

  • नियम केवल पथ से मेल खाते हैं। फ्रैगमेंट (#section) सर्वर तक कभी नहीं पहुँचते हैं; ब्राउज़र एक रीडायरेक्ट के बाद उन्हें फिर से संलग्न करता है।
  • एक ऐसे पथ पर रीराइट करना जो मौजूद नहीं है एक 404 बनाता है, मूल पथ के लिए चुप्पी से गिरने के बजाय। रीराइट लक्ष्य आपके बिल्ड आउटपुट में मौजूद होने चाहिए।
  • नियम आपके प्रोजेक्ट से कुछ माँगे जाने से पहले चलते हैं, इसलिए वे स्टेटिक फ़ाइलों और सर्वर-मोड अनुरोधों दोनों पर लागू होते हैं।
  • प्रत्येक पर्यावरण स्वतंत्र है। प्रोडक्शन पर नियम स्टेजिंग या पूर्वावलोकन पर लागू नहीं होते हैं। उन्हें जानबूझकर कॉपी करें।

एक नियम को हटाना

नियम पंक्ति पर ट्रैश आइकन पर क्लिक करें, फिर परिवर्तन लागू करने के लिए Save rules पर क्लिक करें। एक को जोड़ने की तरह, परिवर्तन अगले deployment से प्रभावी होता है।

कब एक Edge Function का उपयोग करें

रीडायरेक्ट इंजन पथ-से-पथ नियमों को संभालता है। एक edge function के लिए पहुँचें जब आपको नियम इंजन व्यक्त नहीं कर सकते ऐसा तर्क चाहिए: हेडर या कुकी पर शाखाकरण, क्वेरी पैरामीटर्स को संरक्षित या पुनः लिखना, भारित A/B रूटिंग, या कुछ भी सशर्त।

संबंधित पाठ

क्या आपको अभी भी सहायता की आवश्यकता है?

हमें ईमेल करें support@kapsulehost.com या KPanel में चैट खोलें।

KPanel खोलें
रीडायरेक्ट्स और रीराइट्स को कॉन्फ़िगर करना