أعتقد أنه من المنطقي افتراض أن أي رابط نسبي يكون نسبيًا لجذر المجلد الفرعي. لذا، إذا كنت تريد رابطًا خارج المنتدى، فستحتاج إلى استخدام عنوان URL كامل الصلاحية.
بدلاً من ذلك، أعتقد أنه قد تتمكن من إعداد توجيه رابط دائم /forum/downloads/* إلى https://example.com/downloads/*
لا أعتقد أن هذا هو الأمر الطبيعي المتوقع عندما تكون المسار النسبي مُرسى، أي /downloads — في عالم HTML/HTTP، هذا يشير إلى جذر الموقع، وليس جذر المجلد الفرعي.
سيُكتب على النحو التالي: /forums/t/something. هذا ما يتوقعه المستخدم العام عند كتابة منشور في المنتدى. هذا هو كيفية عمل معظم المواقع الإلكترونية - لماذا يجب أن يعرف شخص ما إدخال /t/something؟
هذه هي المشكلة، حيث يقوم discourse بإضافة بادئة /forums نفسها إلى تطبيقات متعددة، مما يتسبب في المشكلة المذكورة أعلاه. لا أفهم لماذا تحتاج إلى تعديل عنوان URL المُدخل في منشور على الإطلاق؟
لقد قمت بإجراء آخر commit لملف get-url.js بعد وقت من تاريخ الـ commit المرتبط به.
أتفق على أنه لا ينبغي إعادة كتابة الروابط إذا كانت مدخلة من قبل المستخدم، ربما لا ينبغي استدعاء getURL في هذه السيناريوهات؟ أعتقد أن getURL مخصص لاستخدامه مع المسارات الافتراضية في Discourse لتحويلها إلى إعداد المجلد الفرعي، حيث تحتوي على بعض الاختبارات التي تتوقع بوضوح إضافة المجلد الفرعي في البداية:
لقد بحثت في هذا الأمر ظهر اليوم ولدي إصلاح في هذا الطلب:
لسوء الحظ، تم تصميم كود routeTo الخاص بنا ليعمل مع عناوين URL النسبية، لذا إذا قمنا باستدعاء url.routeTo("/cool") وكان هناك مجلد فرعي sub مُعد، فسيتم إعادة كتابته إلى /sub/cool حتى لو بدا /cool نسبيًا. لا أعتقد أن هذا صحيح، لكنني أراهن على أن الكثير من الكود يعتمد عليه.
لحسن الحظ، في هذه الحالة كان متتبع النقر هو من أعاد التوجيه لأنه اعتقد أن العنوان URL داخلي. أضفت تحققًا للتأكد من أن الرابط الداخلي يقع على نفس البادئة، ونظفت الاختبارات. يبدو أن الأمر يعمل.
لكنني لا أعرف كيف حدث هذا التراجع - لقد حاولت استخدام git blame ولم أجد شيئًا.
لقد لاحظنا أيضًا أن الروابط النسبية إلى نفس الموقع، مثل /downloads، تُعامل كروابط خارجية وتفتح في علامة تبويب جديدة للمتصفح. هذا في الحقيقة ليس أمرًا كبيرًا.
أيضًا، وليس أمرًا مهمًا، ولكن إذا قمت بإزالة معرف المنشور من نهاية رابط منشور في المنتدى، كما فعلت، فإن سجل التصفح يفقد عند النقر على الرابط، مثل: هذا الرابط
للأسف، لا يمكنني إعادة إنتاج هذه المشكلة. محليًا، عندما أستخدم نفس الرابط تمامًا، يتم معالجته بشكل صحيح. يجب أن أضيف أيضًا أن تصحيحي لا ينبغي أن يغير طريقة كتابة الروابط كـ HTML، بل يتعامل فقط مع ما يحدث عند النقر على رابط.