فشل إعادة كتابة المسار من جانب العميل مع إعداد مجلد فرعي

متابعة النقاش من سلوك إعادة كتابة مسار URL في Discourse يفشل بسبب المجلد الفرعي:

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

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

بعض المسارات التي يتم إعادة كتابتها:

  • /f/t/food-chain-magnate/4826/f/tood-chain-magnate/4826
  • /f/tag/food-chain-magnate/f/tagood-chain-magnate
  • /f/u/renato/follow/following/f/u/renatoollow/following
  • /f/u/fred/summary/f/ured/summary

بما أن إعادة الكتابة تتم من جانب العميل، فإن استدعاء نفس الروابط عبر CURL يعمل بشكل جيد.

إليك هذا الالتزام الذي أصلح المشكلة في الأصل، لكن getURL تغير لاستخدام دوال get-url بدلاً من Discourse.BaseUri.

عند تتبع استدعاءات getURL، يكون location.pathname صحيحًا في الاستدعاء الأول (يبدأ بـ /f)، لكن في أحد الاستدعاءات التالية يتم إزالة المجلد الفرعي ويصبح /t/f-started-slug/id، مما يتسبب في أن يعمل هذا الاستبدال على ذلك /f.

لا أعرف بما يكفي عن البنية الداخلية لـ Discourse لفهم مكان حدوث هذه إعادة الكتابة تمامًا، لكن عند الاختبار في نسختي، يبدو أن إجبار الاستبدال في withoutPrefix على العمل فقط في بداية path يحل المشكلة.

// تغيير ...
return path.replace(rootURL, "");
// إلى شيء مثل ... (بافتراض أن rootURL لا يحتاج إلى هروب)
return path.replace(new RegExp("^" + rootURL), "")
// أو بدون تعبيرات نمطية ...
return path.indexOf(rootURL) === 0 ? path.slice(rootURL.length) : path;

لا أعرف ما إذا كان ذلك سيكون إصلاحًا ممكنًا أو إذا كان سيؤدي إلى أي تدهور، أي مساعدة مقدرة.

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

حسناً، كان البحث الأفضل في المواضيع الموجودة سيقودني إلى رد من الأمس قد يحل هذه المشكلة…
https://meta.discourse.org/t/two-bugs-with-usernames-starting-with-subfolder-name/169505/6

تعديل: قمت للتو بالترقية إلى 70050a8ba3 والمشكلة لا تزال قائمة.

إعجابَين (2)

سألقي نظرة على هذا عندما يتيح لي الوقت.

4 إعجابات

يبدو أن هذا هو الحل بالفعل، شكرًا لك على التحقيق وتقرير الخطأ. يجب أن يصحح هذا الطلب (PR) المشكلة:

هل يمكنك تجربتها يا @renato؟

إعجابَين (2)

يعمل بشكل ممتاز الآن، شكرًا لك!

إعجابَين (2)

تم إغلاق هذا الموضوع تلقائيًا بعد 7 أيام. لم يعد مسموحًا بإضافة ردود جديدة.