إعادة توجيه عنوان URL باستخدام Nginx في Digital Ocean

لدي إعداد جاهز لـ Discourse على Digital Ocean.
أرغب في إعادة التوجيه من Flarum إلى Discourse ولكني لم أتمكن من العثور على مجلد nginx.

بحثت في مجلدات /etc/ - /usr/ ولكني لم أجدها. هل لا أجدها لأن Docker مستخدم؟

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

Flarum: https://testdiscourse.com/d/123123-asdasd
Discourse: https://testdiscourse.com/t/asdasd/123123

أرغب في إعادة التوجيه كما هو موضح أعلاه، ولكني لم أتمكن من العثور على مجلد nginx. سأكون ممتنًا لمساعدتك.
أيضًا، إذا كان بإمكانك مشاركة أكواد regex، سأكون ممتنًا لك :slight_smile:

هل قمت بتثبيت قياسي أم أن flarum يعمل على نفس المضيف مثل Discourse؟

هل استخدمت البرنامج النصي لترحيل flarum لاستيراد بياناتك؟ لا يبدو أن البرنامج النصي لـ flarum يتعامل مع إعادة توجيه الروابط الدائمة. لا يمكنني تخيل كيف يمكن أن تعمل إعادة التوجيه التي تقترحها إلا إذا كنت قد اختلقت بطريقة ما معرفات المواضيع في Discourse لتتطابق مع تلك الموجودة في flarum.

إذا قمت بذلك بطريقة ما، فهناك إعداد موقع permalink normalization سيقوم بما تقترحه. سيكون شيئًا مثل

/d/(\d+)-(.*)/t/\2/\1/

ولكن يمكن استبدال قسم asdasd بـ -، حيث يتم تجاهل الكلمة الدلالية للتوجيه.

nginx موجود داخل حاوية docker. يمكنك رؤيته إذا قمت

cd /var/discourse
./launcher enter app

سيتم تدمير التغييرات التي تجريها هناك عند بناء حاوية جديدة. من الممكن إجراء تغييرات على app.yml الخاص بك والتي ستعدل تكوين nginx في الحاوية عند بناء حاوية جديدة. يمكنك إلقاء نظرة على القوالب في /var/discourse/templates للحصول على بعض الأمثلة.

إعجابَين (2)

لقد دخلت إلى دوكر باستخدام الأمر ./launcher enter app.
إنه في nginx :slight_smile: آسف أنا مبتدئ.

ما هو الملف الذي يجب علي تكوينه في nginx؟ هل لديك أي معرفة حول هذا الموضوع؟
هل يظهر اسم النطاق وما إلى ذلك بشكل طبيعي في هذا الملف؟

سيكون الحل الأمثل هنا هو تحديث البرنامج النصي للترحيل بحيث يتم إنشاء عمليات إعادة توجيه الروابط الدائمة تلقائيًا.

لا تقم بتكوين nginx مباشرة، فسيتم تدمير هذه التغييرات في كل مرة يتم فيها إعادة بناء الحاوية للترقية.

بدلاً من ذلك، كما يقول @pfaffman، قم بتحرير app.yml لتعديل تكوين nginx.

إعجابَين (2)

أقوم بإجراء تغييرات في ملف app.yml ولكن كيف يجب أن أقوم بإعادة التوجيه بالضبط؟ :frowning:

سأكون ممتنًا جدًا لو استطعت المساعدة. هناك أكثر من 150 ألف سؤال، لا أريد محاولة المرور عليها كلها :frowning:

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

عندما أكتب إعادة التوجيه باستخدام rewrite، ما أريده هو:

https://testdiscourse.com/d/123123-asda-asdasd-adas

https://testdiscourse.com/t/asda-asdasd-adas

لا أحتاج حتى إلى 123123، كيف يمكنني فعل ذلك؟

تحتاج وجهتك إلى معرف الموضوع، والنقاط الاختيارية اختيارية

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

أليس كافياً وجود قسم للقناة؟

https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean

على سبيل المثال، عندما تنقر على الرابط أعلاه، تفتح هذه الصفحة.

لذلك لا حاجة لكتابة 235297.

https://meta.discourse.org/t/cake/235297/ لا يؤثر الجزء الناقص على إعادة التوجيه - يمكنك وضع أي شيء قبل المعرف

https://meta.discourse.org/t/235297/ يمكنك حتى حذف الجزء الناقص تمامًا

https://meta.discourse.org/t/redirect-url-with-nginx-in-digital-ocean/ سيعمل هذا ولكنه أكثر هشاشة

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

نظرًا لأن قيم المعرفات في Flarum وقيم المعرفات هنا مختلفة، فإن قيم الأسماء المستعارة كافية بالنسبة لي.

من المؤسف أن أقوم بـ 150 ألف سؤال واحدًا تلو الآخر. أنا متعب جدًا :slight_smile:

ولهذا السبب فإن إصلاح برنامج الاستيراد هو الحل الأسهل

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

لم يكن هناك خيار إعادة توجيه الرابط الدائم في البرنامج النصي للاستيراد ولكن :frowning: أنا أيضًا جديد في لغة Ruby و postgresql. أحب ذلك ولكن لا أستطيع.

من المؤكد تقريبًا أنه سيكون أسرع في التحقيق والمقارنة مع نصوص الاستيراد الأخرى ومحاولة التنفيذ بدلاً من إنشاء 150,000 إعادة توجيه يدويًا.

إعجابَين (2)

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

أوه. آسف. يجب أن تكون معرفات الاستيراد في قاعدة البيانات. يمكنك كتابة نص لإنشاء الروابط الدائمة. ستحتاج إلى النظر في بعض نصوص الاستيراد الأخرى لنص ينشئ عمليات إعادة التوجيه بعد استيراد المواضيع بدلاً من جزء من وظيفة استيراد الموضوع.

3 إعجابات

MVP هنا! :man_superhero:

إعجابَين (2)

إليك مثال:

في بعض الأحيان يكون من الصعب الحصول على الاسم المستعار الصحيح لأسباب مختلفة. يمكنك عادةً القيام بشيء ذكي باستخدام permalink_normalizations لتجاهل الاسم المستعار والاهتمام فقط بالمعرف في الرابط الدائم.

4 إعجابات