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://...، لذلك فإن كلاً من المسار المحلي والعنوان الخارجي الكامل صحيح.
  4. اختر نوع القاعدة:
    • 301 Permanent: تم نقل العنوان بشكل دائم. يخزن المتصفحات ومحركات البحث هذا في الذاكرة.
    • 302 Temporary: تم النقل الآن، غير مخزن في الذاكرة. استخدمه للحملات والتجارب.
    • Rewrite: قدم مسار الوجهة دون تغيير العنوان في شريط عنوان المتصفح.
  5. انقر على Save rules.

تبدأ القواعد سريانها من النشر التالي، وليس فوراً. حفظ القاعدة لا يغير ما تقدمه النشرة المباشرة حالياً. أعد النشر بعد الحفظ، وإلا ستبدو قواعدك غير فعالة.

يتم تخزين 301 في الذاكرة بواسطة المتصفحات، وأحياناً لفترة طويلة جداً، ولا يوجد شيء يمكنك فعله من الخادم لمسحه. إذا لم تكن متأكداً من أن الحركة دائمة، فاستخدم 302 أولاً ثم قم بتبديله إلى 301 بمجرد تأكدك. الخطأ في هذا الأمر على مسار عالي الحركة يصعب فعلاً العودة عنه.

أنماط مسار المصدر

النمطالمطابقاتالتقاطات
/old-pageبالضبط /old-pageلا شيء
/blog/*أي شيء يبدأ بـ /blog/بقية المسار، يتم الإشارة إليها بـ * في الوجهة
/posts/:id/posts/ بالإضافة إلى جزء مسار واحدهذا الجزء، باسم :id
/files/:rest*/files/ بالإضافة إلى كل شيء بعده، بما في ذلك الشرطات المائلةالباقي كله، باسم :rest

الفرق بين :id و :rest* هو الفرق المهم. تطابق المعامل المسمى جزء واحد فقط وتتوقف عند الشرطة المائلة التالية. يطابق الرمز المميز البري كل شيء متبقي، بما في ذلك الشرطات المائلة.

استخدام التقاطات في الوجهة

قم بالإشارة إلى معامل مسمى حسب الاسم، وإلى رمز مميز بري عاري بـ *:

المصدرالوجهةالنتيجة
/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

إرسال الحركة إلى نطاق آخر

قد تكون الوجهة عنواناً مطلقاً، لذا يمكن للقاعدة أن تشير إلى موقع مختلف تماماً.

  • المصدر: /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 عندما تنتمي القواعد إلى الرمز، بحيث يتم مراجعتها في طلب السحب وتتحرك مع الاسترجاع. استخدم لوحة التحكم عندما تحتاج إلى قاعدة مباشرة الآن دون نشر. لا تحافظ على نفس القاعدة في كلا المكانين: ستفوز قاعدة لوحة التحكم دائماً وستبدو قاعدة الملف وكأنها يتم تجاهلها، وهي كذلك.

الحدود

  • حتى 100 قاعدة إعادة توجيه وإعادة كتابة لكل بيئة، و 100 في kaps.json.
  • حتى 200 قاعدة رأس مخصص لكل بيئة.

يتم إسقاط القواعد التي تتجاوز الحد بصمت بدلاً من رفع خطأ، لذا ابق تحتها بكثير.

رؤوس الاستجابة المخصصة

إلى جانب عمليات إعادة التوجيه، تحتوي كل بيئة على قسم رؤوس الاستجابة في Settings لحقن رؤوس HTTP على المسارات المطابقة. يستخدم صيغة نمط المسار نفسها، وهناك إعدادات مسبقة لإضافة سريعة لـ HSTS و CSP و no-embed و no-sniff و referrer policy و CORS.

على عكس عمليات إعادة التوجيه، يتم تطبيق جميع قواعد رؤوس المطابقة، وليس الأول فقط، وتستبدل قاعدة لاحقة قاعدة سابقة عند تعيينها لنفس الرأس. Content-Length و Transfer-Encoding و Connection محظورة، لأن تعيينها سيؤدي إلى فساد الاستجابة.

السلوك الذي تستحق معرفته قبل أن تعتمد عليه

لا يتم نقل سلاسل الاستعلام عبر إعادة التوجيه. تطابق القاعدة ما إذا كان الطلب يحتوي على سلسلة استعلام أم لا، لكن الوجهة مبنية من القالب الخاص بك وجزء المسار الملتقط فقط. يتم إعادة توجيه طلب إلى /old?utm_source=email إلى /new، مع إسقاط المعاملات. إذا كنت تعتمد على معاملات التتبع التي تبقى على قيد الحياة، فتعامل مع إعادة التوجيه في وظيفة الحافة بدلاً من ذلك، حيث تتحكم في عنوان URL الوجهة بالكامل.

  • تطابق القواعد المسار فقط. لا تصل الأجزاء (#section) أبداً إلى الخادم على الإطلاق؛ يعيد المتصفح إرفاقها بعد إعادة التوجيه.
  • إعادة كتابة إلى مسار غير موجود ينتج 404، بدلاً من السقوط الصامت إلى المسار الأصلي. يجب أن توجد أهداف إعادة الكتابة في مخرجات بنائك.
  • تعمل القواعد قبل طلب أي شيء من مشروعك، لذا فهي تنطبق على الملفات الثابتة وعلى طلبات وضع الخادم على حد سواء.
  • كل بيئة مستقلة. لا تنطبق القواعس على الإنتاج على المرحلة الانتقالية أو المعاينات. انسخها بقصد.

حذف القاعدة

انقر على أيقونة الحذف على صف القاعدة، ثم انقر على Save rules لتطبيق التغيير. كما هو الحال مع إضافة واحد، يسري التغيير من النشر التالي.

متى تستخدم وظيفة Edge بدلاً من ذلك

يتولى محرك إعادة التوجيه قواعد المسار إلى المسار. استخدم وظيفة edge عندما تحتاج إلى منطق لا يمكن لمحرك القواعد التعبير عنه: التفرع على رأس أو ملف تعريف، والحفاظ على معاملات الاستعلام أو إعادة كتابتها، وتوجيه A/B المرجح، أو أي شيء مشروط.

القراءة ذات الصلة

هل تحتاج إلى مساعدة إضافية؟

راسلنا على البريد الإلكتروني support@kapsulehost.com أو افتح محادثة في KPanel.

فتح KPanel
تكوين إعادات التوجيه وإعادة الكتابة