خلل ؟page=، في الـ core وفي الـ sitemap plugin

يبدو أن هناك خطأين أو ثلاثة من نوع “off-by-one” متراكمة فوق بعضها البعض هنا…

بمجرد أن يحتوي الموضوع على 18 مشاركة، يبدأ ملف sitemap_recent.xml في عرض رابط يحتوي على رقم صفحة https://forum.example.com/t/slug/123?page=2.

المشكلة 1: الصفحة 2 غير موجودة حتى يحتوي الموضوع على 20 مشاركة، لكن خريطة الموقع تظهر هذا الرابط.
التوقع المتوقع: ألا يظهر في خريطة الموقع رابط page=2 إلا بعد أن يحتوي الموضوع على 20 مشاركة.

المشكلة 2: عندما يحتوي الموضوع على 18 مشاركة، يعطي هذا الرابط رسالة خطأ “هذه الصفحة غير موجودة”.
التوقع المتوقع: التعامل مع هذا الموقف بسلاسة وإعادة توجيه المستخدم إلى نهاية الموضوع.

المشكلة 3: عندما يحتوي الموضوع على 19 مشاركة، يعطي هذا الرابط رسالة “خطأ. أثناء محاولة التحميل. حدث شيء خاطئ”.
التوقع المتوقع: التعامل مع هذا الموقف بسلاسة وإعادة توجيه المستخدم إلى نهاية الموضوع.

المشكلة 4: عندما يحتوي الموضوع على أكثر من 20 مشاركة، ولكن تم حذف بعض المشاركات بحيث أصبح إجمالي المشاركات الظاهرة أقل، يبقى ?page=2 في خريطة الموقع الأخيرة حتى يتم نشر مشاركة جديدة واحدة، ثم يختفي.
التوقع المتوقع: أن يختفي رقم الصفحة (أو ينخفض للأرقام الأعلى) ليعكس العدد الفعلي للصفحات المتاحة.

الأسوأ من ذلك: هذا الرابط الخاطئ يظهر أيضًا في نتائج بحث Google!
المشكلة 5: عند النقر على هذا الرابط، تظهر رسالة خطأ للمستخدم.
لكن في Google، يبدو أن محتوى مكرر يتم إنشاؤه.

إعادة إنتاج المشكلة على Meta:

  1. ابحث عن موضوع يحتوي على 17 أو 18 ردًا:
    image

  2. ابحث عنه في https://meta.discourse.org/sitemap_recent.xml

  3. اتبع الرابط

  4. تحقق من Google

6 إعجابات

همم، هذا ليس جيدًا! يجب أن نصلح ذلك ونقوم بنقله إلى الإصدارات الأقدم @zogstrip.

5 إعجابات

@nbianca هل يمكنك إضافة هذا إلى قائمتك؟

3 إعجابات

كانت المشكلة الكبرى في حساب أرقام الصفحات موجودة في discourse-sitemap:

تم إصلاح مشكلة التخزين المؤقت هنا:

كما قمت بإصلاح مشكلة “غير موجود” في النواة (بشكل طفيف)، حيث كانت ترد برمز 200 عند طلب الصفحة الثانية، رغم وجود 20 منشورًا فقط (صفحة واحدة):

8 إعجابات