نظرة عامة على تحسين محركات البحث في Discourse (خريطة الموقع / robots.txt)

يحتوي Discourse على العديد من ميزات تحسين محركات البحث (SEO) التي تعمل فور التثبيت. باستخدام الإعدادات الافتراضية المعقولة، يمكن لمديري المجتمعات التركيز على تنمية المجتمع دون أن يشعروا بالانشغال عن تحسين محركات البحث. ومع ذلك، هناك بعض الأشياء التي يمكنك تغييرها، وبعض الأشياء التي يجب أن تعرفها، وبعض النصائح والحيل العامة أدناه.

عرض ثابت لمحركات البحث

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

إليك مقارنة لما يراه المستخدم وما تراه محركات البحث:

قائمة المواضيع:

الموضوع:

معاينة عرض الزاحف

يمكنك فحص ما يقدمه Discourse للزاحفات دون تعطيل JavaScript بطريقتين:

  1. معامل URL ?print — أضف ?print إلى أي رابط Discourse (على سبيل المثال، https://yourforum.com/t/some-topic/123?print). هذا يفرض تخطيط الزاحف لأي متصفح، بغض النظر عن وكيل المستخدم. إنها أبسط طريقة لمراجعة ما تراه محركات البحث.

  2. رأس الطلب Discourse-Render: crawler — أرسل هذا الرأس HTTP مع أي طلب لفرض تخطيط الزاحف. مفيد للمراجعة البرمجية أو الاختبار باستخدام curl:

    curl -H "Discourse-Render: crawler" https://yourforum.com/t/some-topic/123
    

الوسوم الفوقية (Meta tags)

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

  • إعدادات الموقع العنوان، الوصف و الوصف القصير للموقع
  • أسماء الفئات
  • عناوين المنشورات ومحتواها
  • وهكذا :technologist:

وسوم الفوقية لوسائل التواصل الاجتماعي

يولد Discourse تلقائياً وسوم Open Graph و Twitter (X) Card الفوقية للمشاركة الاجتماعية الغنية:

وسوم Open graph

  • og:site_name, og:type, og:url, og:title, og:description
  • og:image - قابل للتكوين عبر إعداد opengraph_image
  • og:article:section - خبز الرغيف (breadcrumbs) للفئات
  • og:article:tag - وسوم المواضيع

وسوم بطاقات X (سابقاً Twitter)

  • twitter:card - “ملخص” أو “ملخص_صورة_كبيرة”
  • twitter:title, twitter:description, twitter:image
  • twitter:label1/data1 - تقدير وقت القراءة
  • twitter:label2/data2 - عدد الإعجابات

إعدادات التكوين

  • opengraph_image - صورة OG الافتراضية للمشاركة الاجتماعية
  • x_summary_large_image - صورة البطاقة الكبيرة لـ X (سابقاً Twitter)

هيكلية الروابط والتشفير

الأحرف غير اللاتينية والروابط

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

تحسين محركات البحث الدولي ووسوم hreflang

للمجتمعات متعددة اللغات، يدعم Discourse وسوم hreflang، مما يساعد محركات البحث على تقديم الإصدار اللغوي الصحيح للمستخدمين. لتمكين هذا، يجب عليك تكوين هذه الإعدادات الثلاثة (الإدارة → الإعدادات → التوطين):

  1. content_localization_enabled: يفعّل نظام توطين المحتوى.
  2. content_localization_supported_locales: يحدد رموز الإعدادات اللغوية المدعومة (على سبيل المثال، en|es|fr).
  3. content_localization_crawler_param: مطلوب لتوليد وسوم <link rel="alternate" hreflang="..."> وإعادة كتابة الروابط الداخلية للزاحفات باستخدام معامل الإعداد اللغوي tl (على سبيل المثال، /t/example-topic/123?tl=es).

مع تمكين هذه الإعدادات، يولد Discourse روابط بديلة لكل لغة مدعومة، مما يساعد Google ومحركات البحث الأخرى على تقديم الإصدار اللغوي الصحيح للمستخدمين.

إعداد المجلد الفرعي مقابل النطاق الفرعي

يميل Discourse نحو النطاقات الفرعية بدلاً من المجلدات الفرعية بسبب بساطتها التقنية. لا تفضل Google حقاً أحدهما على الآخر[1]، لكن Discourse يوصي بشدة بتجنب إعدادات المجلدات الفرعية إلا إذا كان لديك فهم تقني عميق.

إذا كنت تشغل Discourse في مجلد فرعي (على سبيل المثال example.com/forum/)، فإن ملف robots.txt الخاص بك على المستوى الجذري يُدار بواسطة خادم الويب الرئيسي الخاص بك، وليس Discourse. للمساعدة في تكوينه بشكل صحيح، يكشف Discourse عن نقطة نهاية JSON عند /robots-builder.json التي تُرجع قواعد المنع الدقيقة التي سينشئها Discourse، مقيدة بمسار المجلد الفرعي الخاص بك. يمكنك استخدام هذا كمدخلات لنص برمجي يكتب ملف robots.txt على مستوى الخادم.

التوحيد (Canonicalization)

تهتم Google بفهرسة الإصدارات الموحدة من الصفحات. في Discourse، بالنسبة لموضوع يحتوي على ردود متعددة، يتم تسليم الرابط الموحد (المنشور الأول) إلى Google، والتي تقوم بعد ذلك باتخاذ قرار الفهرسة. سيتم تقسيم المواضيع الأطول من 20 منشوراً إلى صفحات، حيث تكون كل صفحة رابطاً موحداً يحتوي على ما يصل إلى 20 منشوراً.

على سبيل المثال، سيكون الوسم الموحد لآخر رد في هذا الموضوع هو https://meta.discourse.org/t/try-out-the-new-sidebar-and-notification-menus/238821?page=12.

إعداد allow_indexing_non_canonical_urls

يتحكم إعداد الموقع المخفي allow_indexing_non_canonical_urls (الافتراضي: true) فيما إذا كانت متغيرات الروابط غير الموحدة تتلقى رأس X-Robots-Tag: noindex. عند ضبطه على false، سيتم تقديم أي طلب إلى رابط يختلف عن الرابط الموحد (على سبيل المثال، رابط منشور مباشر مثل /t/slug/123/45 عندما يكون الموحد /t/slug/123?page=3) مع رأس noindex.

المواضيع المضمنة

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

العلامات المخططية (Schema markup)

يستخدم Discourse علامات schema.org واسعة لمساعدة محركات البحث على فهم محتواك. يتضمن كل نوع من أنواع البيانات غنية بالبيانات المنظمة التي تظهر في نتائج البحث وتساعد في قابلية الاكتشاف.

المواضيع

استخدم مخطط DiscussionForumPosting لتمثيل سلسلة المناقشة الرئيسية ويتضمن:

  • headline - عنوان الموضوع
  • datePublished - وقت إنشاء الموضوع
  • articleSection - اسم الفئة
  • keywords - جميع وسوم الموضوع
  • publisher - معلومات موقعك/منظمتك
  • author - معلومات منشئ الموضوع الأصلي

المنشورات والردود

تستخدم المنشورات الفردية داخل المواضيع مخطط Comment، بما في ذلك:

  • author - مؤلف المنشور مع اسم ورابط الملف الشخصي
  • text - محتوى المنشور
  • datePublished و dateModified - طوابع وقت الإنشاء والتعديل
  • interactionStatistic - عدد الإعجابات باستخدام InteractionCounter بنوع LikeAction

خبز الرغيف (Breadcrumbs)

تستخدم تنقل الفئات مخطط BreadcrumbList الذي يظهر في نتائج البحث، مما يعرض مسار التسلسل الهرمي للفئات. يتضمن كل عنصر من عناصر خبز الرغيف:

  • itemListElement - روابط الفئات الفردية
  • position - الترتيب في التسلسل الهرمي
  • ألوان الفئات للتمييز البصري

الفئات وقوائم المواضيع

تستخدم صفحات الفئات وعروض قائمة المواضيع مخطط ItemList:

  • مرتبة بـ ItemListOrderDescending للفرز الزمني
  • تتضمن بيانات الوصف الموضعي لكل عنصر
  • تساعد محركات البحث على فهم هيكلية المحتوى والتسلسل الهرمي

الصفحة الرئيسية

تحتوي الصفحة الرئيسية للموقع على بيانات منظمة بصيغة JSON-LD لـ WebSite مع SearchAction، مما يتيح ظهور مربع بحث Google مباشرة في نتائج البحث لموقعك.

صفحة “حول”

تستخدم صفحة “حول” الخاصة بك مخطط صفحة About مع معلومات Organization، مما يساعد محركات البحث على فهم هوية مجتمعك وهدفه.

خريطة الموقع

يدمج Discourse فهرس خريطة الموقع الموجود عند /sitemap.xml والذي يتم تمكينه بشكل افتراضي عبر إعداد enable sitemap. هذا يسهل الفهرسة الأفضل بواسطة محركات البحث. هناك خرائط مواقع أخرى أيضاً:

  1. خريطة الموقع الأخيرة (/sitemap_recent.xml) - المواضيع التي تم تحديثها في آخر 3 أيام (مخزنة مؤقتاً لمدة ساعة)
  2. خريطة الأخبار (/news.xml) - المواضيع التي تم تحديثها في آخر 72 ساعة بتنسيق Google News (مخزنة مؤقتاً لمدة 5 دقائق)، مفيدة للمجتمعات الموجهة للأخبار
  3. خرائط المواقع المقسمة - كتالوج كامل للمواضيع مقسمة إلى صفحات (مخزنة مؤقتاً لمدة 24 ساعة)

تتم إعادة إنشاء خرائط المواقع تلقائياً كل ساعة بواسطة مهمة مجدولة وتتضمن طوابع وقت آخر تعديل. يمكنك تكوين عدد المواضيع لكل صفحة في خريطة الموقع عبر إعداد sitemap_page_size (الافتراضي: 10,000).

زاحفات الويب

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

كشف الزاحف

يكشف Discourse تلقائياً ويتعامل مع أنواع مختلفة من الزاحفات، بما في ذلك:

  • محركات البحث: Googlebot، Bingbot، DuckDuckBot، وغيرها
  • وسائل التواصل الاجتماعي: Facebookbot، Twitterbot، LinkedInBot، Discordbot
  • زاحفات الذكاء الاصطناعي: GPTBot، ClaudeBot، Anthropic-AI، BrightBot
  • خدمات الأرشيف: Wayback Machine، Archive.org
  • خدمات المراقبة: Lighthouse، أداة التفتيش من Google

عند اكتشاف زاحف، يقدم Discourse محتوى محسناً ويضيف رؤوس استجابة خاصة:

  • X-Discourse-Crawler-View: true - يشير إلى محتوى محسّن للزاحف
  • رؤوس Last-Modified - تمكين إعادة الزحف بكفاءة

إدارة حركة مرور الزاحف

يمكن أن تكون بعض الزاحفات متحمسة بشكل مفرط، حيث تضرب منتداك بالعديد من الطلبات. يوفر Discourse عدة إعدادات لإدارة سلوك الزاحف:

  • blocked_crawler_user_agents - حظر زاحفات معينة تماماً (تتضمن قائمة الحظر الافتراضية: mauibot، semrushbot، ahrefsbot، blexbot، seo spider)
  • slow_down_crawler_user_agents - تحديد معدل زاحفات بدلاً من حظرها (تتضمن الافتراضية زاحفات الذكاء الاصطناعي مثل GPTBot، ClaudeBot)
  • allowed_crawler_user_agents - :warning: خطر: ضبط هذا سيحظر جميع الزاحفات غير المدرجة صراحةً، بما في ذلك Googlebot. استخدم هذا فقط إذا كنت تنوي تقييد الزحف إلى مجموعة محددة من البوتات. يأخذ الأولوية الكاملة على blocked_crawler_user_agents. اتركه فارغاً إلا إذا كان لديك سبب محدد لاستخدامه.

رؤوس noindex التلقائية

بالإضافة إلى الإعداد العالمي allow_index_in_robots_txt، يضيف Discourse تلقائياً رؤوس استجابة X-Robots-Tag: noindex إلى عدة أنواع من الصفحات:

  • صفحات البحث — دائماً noindexed (نتائج البحث غير مفيدة كصفحات مفهرسة)
  • صفحات الشارات — دائماً noindexed
  • صفحات المجموعات — دائماً noindexed
  • صفحات ملف تعريف المستخدم — دائماً noindexed
  • صفحات تصفية/تقاطع الوسوم — noindexed (صفحات فهرس وعرض الوسوم مستثناة)
  • تغذيات RSS/Atom — دائماً noindexed

يتم تطبيق هذه على مستوى المتحكم وهي غير قابلة للتكوين. تضمن أن الصفحات المؤقتة، منخفضة القيمة، أو ذات المحتوى المكرر لا تلوث فهارس محركات البحث.

تحليلات الزاحف

يمكن للمشرفين مراقبة نشاط الزاحف في الإدارة → التقارير → زاحفات الويب لرؤية أي البوتات تصل إلى موقعك وكم مرة.

ميزات إضافية لتحسين محركات البحث

توجيه زاحفات الذكاء الاصطناعي عبر llms.txt

يدعم Discourse اتفاقية llms.txt، التي توفر طريقة قياسية لتوجيه زاحفات LLM (مثل تلك المستخدمة بواسطة مساعدي الذكاء الاصطناعي) حول محتوى موقعك وهيكله.

لتفعيله:

  1. حضّر ملف .txt أو .md (بحد أقصى 512 كيلوبايت) يصف موقعك لزاحفات LLM
  2. ارفعه عبر إعداد الموقع llms_txt (الإدارة → الإعدادات → الأمان)
  3. سيتم تقديمه عند https://yourforum.com/llms.txt

:information_source: ملف llms.txt مختلف عن robots.txt ومصمم خصيصاً لتوجيه زاحفات LLM. بدلاً من توفير قواعد الوصول، يوفر سياقاً دلاليًا… يصف ما هو موقعك، وما المحتوى الذي يحتويه، وكيف يجب على مساعد الذكاء الاصطناعي فهمه واستخدامه. فكر في robots.txt كإخبار البوتات ‘أين يمكنها الذهاب’، و llms.txt كإخبار الذكاء الاصطناعي ‘ما الذي ينظر إليه ولماذا يهم’.

دمج OpenSearch

يوفر Discourse وصف OpenSearch عند /opensearch.xml، مما يتيح دمج بحث المتصفح. يمكن للمستخدمين إضافة منتداك مباشرة إلى قائمة محركات البحث في متصفحاتهم.

تغذيات RSS

يحتوي كل موضوع على تغذية RSS متاحة عند /t/{slug}/{id}.rss، والتي تتضمن:

  • عنوان الموضوع والوصف
  • جميع المنشورات/الردود مع معلومات المؤلف
  • تواريخ النشر وأوقات آخر تحديث
  • الفئات والوسوم

:warning: ملاحظة: مسارات تغذية RSS (/t/*/*.rss, /c/*.rss) محظورة في robots.txt للوكيل البري العام * لمنع فهرسة المحتوى المكرر بواسطة معظم الزاحفات. Googlebot مستثنى صراحةً من هذا القيد ويمكنه الوصول إلى تغذيات RSS.

التحقق من موقع Google

استخدم إعداد google_site_verification_token لإضافة وسوم التحقق من Google Search Console دون تعديل قوالب السمات.

تطبيق الويب التقدمي (PWA)

يولد Discourse مظهر تطبيق ويب عند /manifest.json لاكتشاف تطبيقات الجوال وإشعارات التثبيت.

عمليات الهجرة وإعادة توجيه الروابط

tُستخدم ميزة الروابط الدائمة لإعادة توجيه الروابط القديمة، بهدف الحفاظ على تحسين محركات البحث، ومنع أخطاء “الصفحة غير موجودة” ومساعدة محركات البحث على الحصول على الميتاداتا الصحيحة لفهرسة أسهل.

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

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

طرق إزالة الفهرسة

لإخراج الصفحات من فهرس Google، يمكنك إما إزالة المحتوى أو حظر الوصول إلى صفحة. اعتماداً على احتياجاتك، يمكنك جعل موقعك بالكامل خاصاً[3]. يمكنك استبعاد المواضيع عن طريق حذفها أو وضعها في فئات مقيدة. المواضيع المخفية لا يتم فهرستها بشكل افتراضي، لكنها يمكن أن تفعل إذا كان هناك رابط عام في مكان ما يحول إليها.

للإزالة الدائمة، استخدام أداة الإزالة في Google Search Console هو الحل للحفاظ على الصفحات خارج نتائج البحث. اعرف المزيد على Remove information on your website from Google - Search Console Help


  1. ↩︎

  2. البحث عن سلسلة الرابط الدائم في سكربت الاستيراد يجب أن يعطيك هذه المعلومات. ↩︎

  3. ابحث عن إعداد تسجيل الدخول المطلوب. ↩︎

21 إعجابًا