كيف يمكنني استخدام عمليات إعادة التوجيه الديناميكية؟

أنا أقوم بالهجرة من Vanilla إلى Discourse، وقد قررنا البدء من الصفر بدلاً من استيراد 8 سنوات من المواضيع. الموقع الحالي هو forums.29th.org، لذا أفترض أنه بمجرد تشغيل Discourse بالكامل، سأجعل discourse هو forums.29th.org وأنقل Vanilla إلى نطاق آخر، مثل vanilla.29th.org (في الحقيقة أعاني من التفكير في بنية عنوان URL جيدة لأن لدينا عدة منتديات قديمة في هذه المرحلة!)

لذا، أود إعادة توجيه الطلبات التي تطابق نمط عنوان URL الخاص بـ Vanilla إلى النطاق الآخر. سيكون هذا سهلاً جداً بقاعدة nginx، لكن (أ) أردت التحقق مما إذا كان من الممكن استخدام ميزة مدمجة في Discourse، مثل الروابط الدائمة (Permalinks)، و (ب) إذا لم يكن ذلك ممكناً، أردت السؤال عن كيفية تعديل إعدادات nginx بالطريقة الصحيحة (سيكون رائعاً إذا تمكنت من التحكم في إصدارها أيضاً).

للتوضيح، تبدو عناوين مواضيع Vanilla على النحو التالي:

/discussion/42206/example-topic#latest

شكراً!

سأستخدم قاعدة nginx لإعادة توجيه /discussion إلى النطاق الجديد/القديم. (وسأقوم باستيراد البيانات القديمة، ولكن هذا هو ما أدرّ منه رزقي)

@pfaffman شكرًا لك - لكن كيف يمكنني معرفة مكان تعديل قاعدة nginx؟ هل أحتاج إلى تشغيل launcher enter app وتعديل الملف في /etc/nginx/nginx.conf أم شيء مشابه؟ وبافتراض أن الحاويات مؤقتة، كنت أتوقع أن يكون التعديل على شيء مُتحكَّم في إصداراته - هل هذا ممكن؟

يمكنك إضافة عناصر إلى ملف app.yml لتعديل إعدادات nginx (أو تشغيل إعدادات خارجية). لست متأكدًا من أفضل طريقة لإرسالها إليك. إليك مثال على إجراء بعض التغييرات في إعدادات nginx لغرض آخر:

  after_ssl:
   # لا تحوّل جميع المضيفات تلقائيًا إلى اسم النطاق الرئيسي
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /if \(\$http_host[^\}]*\}/m
        to: ""
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301.*$/
        to: "return 301 https://$host$request_uri;"

ممتاز - هذا بالضبط ما كنت أحتاجه. شكرًا لك! هل يوجد شيء من هذا القبيل موثق في مكان ما يمكنني الاطلاع عليه؟

إعجاب واحد (1)

لأي شخص آخر يصل إلى هنا، قمت بتنفيذ ذلك عن طريق الاتصال عبر SSH إلى الخادم الخاص بي، والتنقل إلى /var/discourse، وفتح containers/app.yml باستخدام vim والتمرير لأسفل إلى قسم hooks. ثم أضفت هذا الجزء:

hooks: # هذا السطر يجب أن يكون موجودًا بالفعل
  after_ssl:
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: "location @discourse {"
        to: |
          location /discussion/ {
            return 301 https://vanilla.29th.org$request_uri;
          }

          location @discourse {
  after_code: # هذا السطر يجب أن يكون موجودًا بالفعل
إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.