إعادة كتابة مسارات الموقع النسبية من جانب العميل بشكل غير صحيح مع مجلد فرعي

كان هذا يعمل بشكل صحيح، لكن تحديثًا حديثًا يبدو أنه عطله مرة أخرى

إضافة رابط نسبي

[سجل التغييرات للإصدار الكامل 1.9.2](/downloads/continuaci/continua-ci-version-history-v192)

يؤدي إلى ظهور الرابط بشكل صحيح، والتنسيق أيضًا صحيح، ولكن عند النقر عليه يتحول الرابط إلى:

https://www.finalbuilder.com/forums/downloads/continuaci/continua-ci-version-history-v192

لاحظ أن مثيل discourse الخاص بنا مثبت كمجلد فرعي تحت forums

يبدو أن هناك بعض التغييرات في هذا المجال في وقت سابق من هذا العام والتي قد تكون ذات صلة.

يعمل حاليًا على الإصدار 2.8 بيتا1 - https://github.com/discourse/discourse/commits/28e201f3919e23d734a5414f18dbf83d1d52a5e0

3 إعجابات

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

بدلاً من ذلك، أعتقد أنه قد تتمكن من إعداد توجيه رابط دائم /forum/downloads/* إلى https://example.com/downloads/*

إعجابَين (2)

هذا كان يعمل من قبل، فلماذا تم تغييره؟

لا أعتقد أن هذا هو الأمر الطبيعي المتوقع عندما تكون المسار النسبي مُرسى، أي /downloads — في عالم HTML/HTTP، هذا يشير إلى جذر الموقع، وليس جذر المجلد الفرعي.

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

إذن، إذا كان لديك رابط على موقعك الرئيسي يبدأ بـ /t/something، كيف ستعرف ما إذا كان رابطًا لـ Discourse أم رابطًا إلى موقعك الرئيسي؟

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

سيُكتب على النحو التالي: /forums/t/something. هذا ما يتوقعه المستخدم العام عند كتابة منشور في المنتدى. هذا هو كيفية عمل معظم المواقع الإلكترونية - لماذا يجب أن يعرف شخص ما إدخال /t/something؟

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

أتفق مع @RGJ هنا. مشاركة بادئة المجلد الفرعي نفسها بين عدة تطبيقات هي مجرد دعوة للمتاعب.

بالنسبة لي، هذا الأمر لن يتم إصلاحه.

إعجابَين (2)

بجدية؟ إذا كتبت عنوان URL يبدأ بـ /، فإنه بحكم التصميم يكون في جذر الموقع - هل أعيدت تعريف طريقة عمل روابط HTML؟

كان هذا يعمل بشكل جيد لمدة 2.5 سنة على موقعنا - حتى حدث التغيير المعطل الأخير.

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

هذه هي المشكلة، حيث يقوم discourse بإضافة بادئة /forums نفسها إلى تطبيقات متعددة، مما يتسبب في المشكلة المذكورة أعلاه. لا أفهم لماذا تحتاج إلى تعديل عنوان URL المُدخل في منشور على الإطلاق؟

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

نحن نبحث في هذه المشكلة، وقد تكون مرتبطة بهذا الإصلاح:

أتفق بأن الروابط إلى /jobs على acme.com يجب أن توجه إلى acme.com/jobs بغض النظر عن إعداد المجلد الفرعي. ولا يجب أن توجه إلى acme.com/forum/jobs.

7 إعجابات

لقد قمت بإجراء آخر commit لملف get-url.js بعد وقت من تاريخ الـ commit المرتبط به.

أتفق على أنه لا ينبغي إعادة كتابة الروابط إذا كانت مدخلة من قبل المستخدم، ربما لا ينبغي استدعاء getURL في هذه السيناريوهات؟ أعتقد أن getURL مخصص لاستخدامه مع المسارات الافتراضية في Discourse لتحويلها إلى إعداد المجلد الفرعي، حيث تحتوي على بعض الاختبارات التي تتوقع بوضوح إضافة المجلد الفرعي في البداية:

يرجى إخباري إذا كان بإمكاني تقديم أي مساعدة.

لقد بحثت في هذا الأمر ظهر اليوم ولدي إصلاح في هذا الطلب:

لسوء الحظ، تم تصميم كود routeTo الخاص بنا ليعمل مع عناوين URL النسبية، لذا إذا قمنا باستدعاء url.routeTo("/cool") وكان هناك مجلد فرعي sub مُعد، فسيتم إعادة كتابته إلى /sub/cool حتى لو بدا /cool نسبيًا. لا أعتقد أن هذا صحيح، لكنني أراهن على أن الكثير من الكود يعتمد عليه.

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

لكنني لا أعرف كيف حدث هذا التراجع - لقد حاولت استخدام git blame ولم أجد شيئًا.

6 إعجابات

لا أعرف ما إذا كان هذا مرتبطًا أم لا، ولكن بعد سحب التحديث، لم يعد محرر الروابط يعمل (يظهر فارغًا أو لا يفصل الحقول).

يبدو أن هذا أسوأ.

إذا أضفت رابطًا
[رابط نسبي للمنتدى](/forums/t/continua-ci-v1-9-2-664-released/7058)

فإنه ينتهي به الأمر إلى
[رابط نسبي للمنتدى](https:///forums/t/continua-ci-v1-9-2-664-released/7058)

وهو ما يتم عرضه دون وجود سمة href

بشكل عابر، تم إجراء الاختبارات المذكورة أعلاه باستخدام Commits · discourse/discourse · GitHub

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

أيضًا، وليس أمرًا مهمًا، ولكن إذا قمت بإزالة معرف المنشور من نهاية رابط منشور في المنتدى، كما فعلت، فإن سجل التصفح يفقد عند النقر على الرابط، مثل: هذا الرابط

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

أعتقد أن هذا قيد الدراسة بالفعل، شكرًا:

إعجابَين (2)