آخر تحديث يعطل الرابط الدائم للفئات

مع التحديث الأخير، أصبح الرابط الدائم للفئة معطلاً، بينما تعمل الروابط الدائمة للمواضيع بشكل جيد.
على سبيل المثال: category/11562 يعيد التوجيه إلى c/11562 وهو أمر غير صحيح، يجب أن يكون إعادة التوجيه الذي تم تعيينه بشكل صحيح كوجهة هو c/general/4 أو c/4
هل يمكن لأي شخص المساعدة في هذه المشكلة؟

لقد أنشأت رابطًا دائمًا للفئة/11562 كان يعيد التوجيه إلى عام، ولكنه معطل الآن؟

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

من أي فرع تحديث هذا؟

صحيح، لقد كان يعمل بشكل جيد. ثم، قمت بالتحديث إلى:

<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">

قمت بمسح قاعدة البيانات بالكامل لإعادة استيراد بعض بيانات المنتدى الأخرى من البداية، والآن لا يعمل.

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

هل يمكنك التحقق مما إذا كان الرابط الدائم لا يزال موجودًا في قاعدة البيانات الخاصة بك وما إذا كان لا يزال يشير إلى المكان الصحيح؟

3 إعجابات

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

عذرًا، كان مسموحًا بصورة لقطة شاشة واحدة فقط لكل منشور

الرابط الدائم الخاص بك ليس في /category/11562 ولكن في /forum/category/11562.

تخميني السريع هو أنك فقدت تطبيع الروابط الدائمة الخاصة بك في الطريق.

3 إعجابات

لا أفهم ما إذا كنت أتحقق من الاستجابة لـ https://preview.vaadin.com/forum/category/11562

أتلقى 302 مع الموقع:
https://preview.vaadin.com/forum/c/11562

بينما للمواضيع على سبيل المثال:
https://preview.vaadin.com/forum/thread/851770

أتلقى 301 مع الموقع:
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931

أتوقع أن يدير Discourse كلاهما بالتساوي، وكما ترى، يحتفظ كلاهما بالمقطع /forum/

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

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

4 إعجابات

لذلك تعمقت قليلاً ولم أفهم كيف كان هذا ليعمل أبدًا، نظرًا لأن category/ سيؤدي دائمًا إلى تشغيل المسار categories#redirect، ولم يتغير هذا مؤخرًا.

get "category/*path" => "categories#redirect"

تحرير المنشور أدناه يظهر أنه كان يعمل في السابق

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

نعم. لا أستطيع أن أستوعب كيف ستعمل الروابط الدائمة (permalinks) وتطبيع الروابط الدائمة (permalink_normalizations) في تثبيت مجلد فرعي.

وهل كان دائمًا تثبيت مجلد فرعي؟

وهل تغير أي شيء آخر عندما قمت بإعادة تشغيل برنامج الاستيراد؟

يبدو أن هناك اختلافًا في برنامجك على الأرجح.

انتظر. https://meta.discourse.org/category/67 يعيد التوجيه إلى https://meta.discourse.org/c/announcements/67، لذا . . . لا، ولكن هناك مواصفات تظهر أن الروابط الدائمة تتجاوز إعادة التوجيه /category وهي قديمة منذ 4-5 سنوات.

لذا أعتقد أنني سأقوم بإنشاء بعض عمليات إعادة توجيه الفئات يدويًا بعد ذلك لمعرفة ما يحدث (مثل /category/mycategory أو شيء آخر لا يحتوي حتى على أرقام فيه)

إعجابَين (2)

اكتشاف جيد يا @pfaffman ، هذا الاختبار يعني أنه كان يجب أن يعمل بالفعل.

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

واو، لم أكن أعرف أن هذا ممكن!

نعم، إنه أمر رائع جدًا، انظر Serve Discourse from a subfolder (path prefix) instead of a subdomain

4 إعجابات

شكراً لجميع إجاباتكم!

من المثير للاهتمام أننا اكتشفنا أن الروابط الدائمة للفئات تعمل من مجلد فرعي فقط إذا لم يكن هناك مسار باسم /category/ في عنوان URL الأصلي. كما ذكر @pfaffman في إجابته. على سبيل المثال، /forum/category_foo/123 يعيد التوجيه بشكل صحيح إلى فئة عامة وجهة.
يلتقط Discourse /category/ ويعيد توجيهه إلى /c/
وبالتالي، يمكن حل هذا بسهولة حقًا:
أضف رابطًا دائمًا من /c/11562 وهو إعادة التوجيه من category/11562 القديم إلى الفئة العامة /c/4.

وكنت على حق، كان التثبيت الأول بدون مجلد فرعي، لكن الثاني كان به مجلد فرعي، وهذا هو الثالث. واختبرنا، وأعتقد أنه كان يعمل في المرتين الأوليين. الشيء الوحيد الذي تغير بين الثاني والثالث هو أننا لم ننظف قاعدة البيانات بين الأول والثاني، وبالنسبة للثالث كان تثبيتًا نظيفًا بقاعدة بيانات جديدة خارج docker (إلى جانب الترقية إلى Discourse v3). لذلك أشك في أن شيئًا ما قد تغير في الإصدار التجريبي من Discourse v3. بخلاف ذلك، لماذا عملت على الإطلاق، حتى بدون مجلد فرعي؟

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

إليك إجابتك

إذا فهمت بشكل صحيح، فما تقصده هو أن Discourse يطبق إعادة التوجيه من /category/ إلى /c/ فقط إذا كان هناك مقطع في المسار.

ومع ذلك، إذا استخدمت منتداك كمثال: https://meta.discourse.org/ ووضعت https://meta.discourse.org/category/1، فسيتم إعادة توجيهي إلى https://meta.discourse.org/c/bug/1.

وهو نفس ما نختبره مع تثبيتنا، سيكون من المستحيل لموقعك أيضًا إعادة التوجيه من /category/#old_number إلى /c/#real_category، سينتهي بك الأمر دائمًا في /c/#old_number.