تحسين محركات البحث في Sitecore

كيفية تحسين ظهور موقع Sitecore في نتائج البحث — الفرق الجوهري بين XP وXM Cloud، وما الذي يقدمه SXA وما لا يقدمه، والفخاخ الخاصة بالمنصة: ملف robots.txt الافتراضي الذي يحظر كل برامج الزحف، والأسماء البديلة التي تنشئ محتوى مكررًا باستجابة HTTP 200، والبيانات الوصفية التي لا ترث القيم الافتراضية لأن الحقل الفارغ لا يساوي NULL.

نُشر أول مرة: 27 يونيو 2026 · آخر تحديث: 22 أغسطس 2026 · Advanced
اللغات

Sitecore منصة تجارب رقمية للمؤسسات تكاد لا توفر وظائف SEO جاهزة، ويختلف خطا منتجاتها جذريًا. Sitecore XP نظام .NET تقليدي يُصيّر الصفحات على الخادم؛ أما XM Cloud، الذي تسميه وثائق Sitecore الحالية SitecoreAI، فهو SaaS بلا واجهة حيث تتحكم واجهة Next.js الأمامية، عبر JSS المنشور الآن باسم Content SDK، في HTML وتدير SEO عبر واجهات بيانات Next.js الوصفية. يضيف SXA الأساسيات مثل خريطة الموقع وإدارة robots.txt وحقول البيانات الوصفية، لكن كل شيء يحتاج إلى إعداد. وتوجد ثلاثة فخاخ خاصة بـSitecore: يحظر robots.txt الافتراضي كل برامج الزحف إذا تُرك الحقل فارغًا؛ وتخدم الأسماء البديلة العنوانين باستجابة HTTP 200 فتُنشئ محتوى مكررًا حقيقيًا؛ ولا ترث حقول البيانات الوصفية الفارغة Standard Values ما لم يُفعّل Reset Blank، لأن الفراغ لا يساوي NULL. وعلى نطاق المؤسسات تصبح الحوكمة — قالب SEO أساسي وقواعد تحقق وضبط البيئات — بأهمية أي إعداد منفرد.

الخلاصة — يكاد Sitecore لا يوفر وظائف SEO جاهزة؛ يضيف SXA الأساسيات لكنه يحتاج إلى إعداد. ويختلف المنتجان تمامًا: XP نظام .NET مصيّر على الخادم، فتتلقى برامج الزحف HTML مكتملًا ويحدث التخصيص على الخادم؛ أما XM Cloud فبلا واجهة، وتتحكم واجهة Next.js الأمامية في HTML وتُدار SEO بواجهات Next.js مثل generateMetadata وMetadataRoute، مع تفضيل SSG وISR. ومن فخاخ المنصة أن robots.txt الافتراضي يحظر كل برامج الزحف عندما يكون الحقل فارغًا؛ وأن الأسماء البديلة تعيد HTTP 200 على العنوانين من دون canonical افتراضي؛ وأن الحقول الفارغة لا ترث Standard Values إلا مع تفعيل Reset Blank، لأن الفراغ لا يساوي NULL. وعلى نطاق المؤسسات تصبح الحوكمة هي العمل الحقيقي. (ملاحظة تسمية: تسمي وثائق Sitecore الحالية منتج XM Cloud باسم SitecoreAI؛ ولم تتغير البنية الموضحة أدناه.)

Evidence for this claim The article's described sitecore-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: Sitecore: SEO Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter Guide

منصتان ونموذجان مختلفان تمامًا لـSEO

أهم ما يجب تحديده قبل لمس أي شيء هو: أي Sitecore تستخدم؟ اسم المنتج واحد، لكن آليات SEO مختلفة.

  • Sitecore XP ‏(Experience Platform). نظام .NET تقليدي مصيّر على الخادم عبر Razor/MVC، ويُنشر محليًا أو في سحابة مُدارة. يتلقى Googlebot عادةً HTML مكتملًا. وتُدار SEO داخل Sitecore، في القوالب وStandard Values ومسارات الطلبات.
  • XM Cloud. خدمة SaaS بلا واجهة. يخزن Sitecore المحتوى ويعرضه عبر GraphQL ‏(Experience Edge)، ثم تصيّر واجهة مستقلة — غالبًا Next.js مبنية باستخدام Sitecore JSS ‏(JavaScript Services) — ملف HTML. توجد SEO في طبقة تطبيق Next.js: يحمل Sitecore المحتوى، ويتحكم Next.js في المخرجات.

ملاحظة عند الرجوع إلى وثائق Sitecore: اعتبارًا من منتصف 2026 أعاد الموقع تسمية منتج SaaS القابل للتركيب من XM Cloud إلى SitecoreAI؛ وتحول مسارات doc.sitecore.com/xmc/... وdevelopers.sitecore.com/learn/accelerate/xm-cloud/... القديمة إلى مسارات .../sai/.../sitecoreai/.... ولم تتغير البنية: Experience Edge وGraphQL وواجهة Next.js منفصلة. لكن حزمة الواجهة الأمامية تُنشر الآن باسم Content SDK بدل JSS، وسترى SitecoreAI في الصور والقوائم الحالية. أبقيت XM Cloud لأنه المصطلح الذي يبحث عنه معظم الممارسين وتعمل به التطبيقات القائمة.

في الحالتين يظل خط الأساس واحدًا. قال Marcel من Fishtank عام 2018: “Sitecore ships with virtually no SEO functionality (with the exception of SXA which includes some basics).” (ترجمة) «يأتي Sitecore من دون وظائف SEO تقريبًا، باستثناء SXA الذي يتضمن بعض الأساسيات». وما زال هذا التصور صحيحًا. فـSXA هو الطبقة التي توفر وحدة خريطة الموقع وإدارة robots.txt في شجرة المحتوى وحقول بيانات وصفية موحدة. ومن دونه يكون كل ذلك تطويرًا مخصصًا.

هذه بيئة SEO للمؤسسات بامتياز. تتضمن تطبيقات Sitecore مطورين وشركاء حلول متخصصين، وكما كتبت عن مواقع المؤسسات عمومًا، “the more likely you are to run into multiple tech stacks,” (ترجمة) «يزداد احتمال مواجهتك لحزم تقنية متعددة»، إلى جانب الأنظمة القديمة وتوزع الملكية بين الأقسام. لذلك يكون إصلاح مشكلة SEO في Sitecore غالبًا تغييرًا في قالب أو تجاوزًا لمسار يملكه مطور، لا إعدادًا تقلبه بنفسك.

البيانات الوصفية وفخ الفراغ مقارنةً بـNULL

توجد حقول SEO، مثل عنوان الصفحة والوصف التعريفي ووسوم Open Graph، في قوالب بيانات الصفحة. والنمط السليم هو قالب SEO أساسي ترثه كل قوالب الصفحات كي توجد الحقول في كل مكان. ويذكر Ken Gray من Konabos الفجوة الافتراضية مباشرةً: “out-of-the-box, Sitecore’s data templates might not include some of the Meta Data fields.” (ترجمة) «قد لا تتضمن قوالب بيانات Sitecore بعض حقول البيانات الوصفية افتراضيًا».

تتيح Standard Values تعيين قيم افتراضية معقولة لهذه الحقول، مثل الرمز $name احتياطًا للعنوان. لكن هنا يظهر فخ Sitecore الذي ينتج بيانات وصفية مفقودة على نطاق واسع. تقول وثائق Sitecore: “If the value of a field is NULL, the item contains the standard value for that field as defined in the data template for that item.” (ترجمة) «إذا كانت قيمة الحقل NULL، يحتوي العنصر على القيمة القياسية لذلك الحقل كما حُددت في قالب بيانات العنصر». لكن الحقل الفارغ ليس NULL. عندما يمسح مؤلف المحتوى وصفًا تعريفيًا يصبح الحقل فارغًا، ولا يرجع إلى Standard Value إلا إذا فُعّل Reset Blank. فتظهر صفحات فيها <meta name="description" content=""> بدل القيمة الافتراضية، وقد يعني ذلك آلاف الأوصاف الفارغة.

الحل من شقين: فعّل Reset Blank في حقول البيانات الوصفية التي تحتاج إلى قيمة احتياطية، وأضف قواعد تحقق تفرض عناوين وأوصافًا غير فارغة وضمن حدود الطول.

إدارة عناوين URL وفخ الأسماء البديلة

ينشئ Sitecore عناوين URL من مسار شجرة المحتوى افتراضيًا؛ وتأتي العناوين النظيفة من إعدادات SXA أو محللات عناصر مخصصة.

الفخ هو الأسماء البديلة للعناصر، أي عناوين URL إضافية تلحقها بأي عنصر. وثّق Dheer Rajpoot أنه “no redirect (no 301 or 302 HTTP status code) happens when you are using aliases in Sitecore,” (ترجمة) «لا يحدث أي تحويل، لا 301 ولا 302، عند استخدام الأسماء البديلة في Sitecore»، ولذلك “multiple URLs will be created for a single page URL.” (ترجمة) «تُنشأ عناوين URL متعددة لصفحة واحدة». يعيد العنوان الأساسي والبديل HTTP 200 بالمحتوى نفسه، أي محتوى مكرر حقيقي، ولا يصدر Sitecore وسم canonical تلقائيًا لحله.

لديك حلان بمستوى الحوكمة:

  1. تجاوز AliasResolver في مسار HttpRequest لحقن وسم canonical يشير إلى العنوان الحقيقي، أو
  2. عدّل مسار الاسم البديل ليصدر تحويل 301 بدل خدمته مباشرةً.

أوصي بالثاني: تعامل مع الأسماء البديلة بوصفها تحويلات لا عناوين وصول بديلة. وتنطبق نصيحة Ken Gray عمومًا: “use Sitecore’s canonical link management to specify the preferred version of a URL” (ترجمة) «استخدم إدارة روابط canonical في Sitecore لتحديد النسخة المفضلة من عنوان URL»، لكن تحويل 301 أنظف للأسماء البديلة.

خرائط الموقع

في SXA اضبط خريطة الموقع من site/Settings → Search Engines Sitemap → Sitemap Mode. يوجد وضعان مهمان: Stored in cache، وهو الافتراضي ويتجدد ديناميكيًا ويلائم المواقع كثيرة التحديث أو المستضافة على Azure؛ وStored in file، وهو ملف ثابت يلائم المواقع الكبيرة قليلة التغيير. يضيف SXA عنوان الخريطة إلى robots.txt تلقائيًا وتوجد الخريطة في /sitemap.xml. ومن الإخفاقات الشائعة أن غياب TargetHostName يجعل الخريطة تعيد 404.

في XM Cloud + Next.js أنشئ الخريطة برمجيًا باستخدام MetadataRoute.Sitemap واستعلم من Experience Edge عبر GraphQL كي تستبعد العناوين غير القابلة للفهرسة في طبقة التطبيق. وتشير إرشادات Sitecore إلى أن “Next.js offers built-in sitemap and robots.txt generation.” (ترجمة) «يوفر Next.js إنشاءً مدمجًا لخريطة الموقع وrobots.txt».

Robots.txt — الإعداد الافتراضي الذي يحظر الجميع

هذا فخ Sitecore الأعلى أثرًا. في SXA يُضبط robots.txt داخل شجرة المحتوى في حقل Robots ضمن Settings، ويجب إعادة نشر الموقع بعد التغيير. وتقول وثائق Sitecore صراحةً: “If no rules are added, the system writes: ‘User-agent: * Disallow: /’” (ترجمة) «إذا لم تُضف قواعد، يكتب النظام: User-agent: * Disallow: /»، وهذا يحظر كل برامج الزحف. لا يعني الحقل الفارغ ملف robots.txt متساهلًا؛ بل يجب تعيين:

User-agent: *
Allow: /

في معظم المنصات يعني غياب robots.txt «ازحف إلى كل شيء». أما في Sitecore فقد يعني العكس، لذلك يجب التحقق من ملف الإنتاج قبل الإطلاق. وفي XM Cloud + Next.js استخدم MetadataRoute.Robots. ويجب أن تحظر مثيلات CM وبيئات QA والتجهيز كل الزحف دائمًا؛ وحده مثيل CD في الإنتاج ينبغي أن يكون قابلًا للزحف.

تعدد اللغات وhreflang والمواقع المتعددة

يخزن Sitecore نسخ اللغات بوصفها إصدارات للعنصر نفسه، لا عناصر مستقلة. ومع الرجوع اللغوي على مستوى العنصر أو الحقل، مثل سلسلة es-MX → es-ES → en، قد يُخدم المحتوى نفسه في عناوين لغات متعددة، ما ينشئ تكرارًا ما لم يوضح hreflang العلاقة. ولا يُنشأ hreflang تلقائيًا في Sitecore القياسي؛ يجب إضافته إلى القوالب، مع أن SXA يستطيع توليده عند ضبطه، باستخدام عناوين مطلقة ومراجع ثنائية الاتجاه وx-default. قال John Mueller، كما نقله Jakub Koba: “TBH hreflang is one of the most complex aspects of SEO (if not the most complex one).” (ترجمة) «بصراحة، hreflang من أعقد جوانب SEO، إن لم يكن أعقدها». فلا تستخف به.

يدعم Sitecore أيضًا المواقع المتعددة ضمن تثبيت واحد، وأحيانًا بمحتوى مشترك. يحتاج المحتوى المشترك عبر حدود المواقع إلى استراتيجية canonical مقصودة، ويحتاج كل موقع إلى خريطة وrobots.txt خاصين به. وهذا مثال على تعقيد الملكية الموزعة والبنية المشتركة الذي ذكرته في SEO التقني للمؤسسات: “Sometimes different people are responsible for different sections of the website or even different pages, which can make internal linking time-consuming.” (ترجمة) «أحيانًا يكون أشخاص مختلفون مسؤولين عن أقسام مختلفة أو حتى صفحات مختلفة، ما يجعل الربط الداخلي مستهلكًا للوقت».

استراتيجية التصيير بلا واجهة في XM Cloud

هناك فرق في ملكية الطبقات يربك الفرق: لدى بيئات XM Cloud مضيف تحرير ومضيف تصيير، وهما ليسا الشيء نفسه. توضح وثائق Sitecore أن مضيف التحرير موجود فقط لتجربة WYSIWYG داخل Page Builder/Design Studio، وأنه “is not set up or scaled for serving live traffic,” (ترجمة) «غير معد أو موسع لخدمة الحركة الحية»، ولا يرى إلا حركة داخلية للمؤلفين. أما مضيف التصيير فهو تطبيق Next.js العام المستضاف على Vercel أو Netlify أو Azure، ويستهلك محتوى Experience Edge ويتوسع لخدمة الزوار. لا تصل برامج الزحف إلا إلى مضيف التصيير؛ ولا ينبغي أن تتمكن محركات البحث من بلوغ مضيف التحرير أصلًا.

في XM Cloud يكون وضع التصيير المختار في Next.js هو قرار SEO. ويلخص Akshay Sura من Konabos الخيارات الأربعة:

الاستراتيجيةالأثر في SEO
SSG (ثابت)الأفضل — “SSG pre-renders HTML at build time… Search engines can easily crawl the pre-rendered HTML.” (ترجمة) «يصيّر SSG ملف HTML مسبقًا وقت البناء، ويمكن لمحركات البحث الزحف إليه بسهولة»
ISR (إعادة توليد ثابتة تدريجية)جيد — أداء ثابت مع تحديث في الخلفية؛ موصى به للمحتوى واسع النطاق
SSR (تصيير على الخادم)جيد — “Fully rendered HTML is ready for search engines to index.” (ترجمة) «يكون HTML المصيّر بالكامل جاهزًا لفهرسة محركات البحث»
CSR (تصيير لدى العميل)الأسوأ — “Search engines may struggle with indexing JavaScript-rendered content.” (ترجمة) «قد تواجه محركات البحث صعوبة في فهرسة المحتوى المصيّر بـJavaScript»

التوصية هي SSG أو ISR للمحتوى الحرج لـSEO، وقصر CSR على الواجهات التفاعلية. تُضبط البيانات الوصفية عبر generateMetadata. ويذكر David Austin من Fishtank: “All fetch calls within generateMetadata are memoized, meaning identical URLs are only fetched once across the application, preventing redundant requests.” (ترجمة) «تُحفظ كل طلبات الجلب داخل generateMetadata، فلا تُجلب العناوين المتطابقة إلا مرة واحدة». ويقول Sebastián Aliaga: “The dynamic approach is the better method for Sitecore Headless as you’ll be able to take what’s part of the page’s layout data and incorporate it.” (ترجمة) «النهج الديناميكي أفضل لـSitecore بلا واجهة لأنه يتيح دمج بيانات تخطيط الصفحة».

التخصيص — لا تستخدم الإخفاء

تخصيص Sitecore مهم لـSEO. في XP يحدث التصيير على الخادم، لذلك يرى Googlebot التجربة الافتراضية غير المخصصة؛ تأكد أنها كاملة ومحسنة لا ضعيفة. وفي XM Cloud قد يخفي تخصيص JSS لدى العميل المحتوى عن برامج الزحف التي لا تنفذ JavaScript؛ فصيّر النسخة الافتراضية مسبقًا عبر SSR أو خصص عند الحافة.

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

البيانات المنظمة

استخدم JSON-LD داخل <script type="application/ld+json">. في XP صيّره من حقول القالب في عرض Razor أو عبر مسار؛ وفي XM Cloud نمذج حقول schema في القوالب واجلبها عبر GraphQL وصيّرها في مكوّن Next.js. أعط الأولوية لـFAQPage وHowTo وProduct وArticle وBreadcrumbList. ويمكن النشر عبر مدير وسوم — تقول Martha van Berkel من Schema App إن الفرق “typically use JavaScript to deploy Schema Markup to Sitecore… both efficient and scalable” (ترجمة) «تستخدم عادةً JavaScript لنشر Schema Markup في Sitecore، وهو نهج كفء وقابل للتوسع» — لكن الحقن لدى العميل قد لا تراه برامج زحف AI، لذا فضّل JSON-LD على الخادم. ويلخص Peter Lambrou من Codehouse الفائدة: “Add schema markup to the page HTML to make your search results appear more attractive.” (ترجمة) «أضف ترميز schema إلى HTML الصفحة لجعل نتائج البحث أكثر جاذبية».

حوكمة المؤسسات — موضع العمل الحقيقي

بعيدًا عن الإعدادات المنفردة، تحدد الحوكمة نتيجة SEO في تثبيت Sitecore كبير. قلت سابقًا إن مواقع المؤسسات هي موضع تألق SEO التقني لأن “enterprise sites can have complex infrastructures and a lot of legacy systems in place” (ترجمة) «قد تمتلك مواقع المؤسسات بنى معقدة وكثيرًا من الأنظمة القديمة»، وإن “I doubt there’s a major website that is technically perfect.” (ترجمة) «أشك في وجود موقع كبير مثالي تقنيًا». وتشمل عناصر الحوكمة المتكررة في Sitecore:

  • تضخم القوالب. قوالب متعددة للغرض نفسه مع حقول SEO مختلفة أو مفقودة. دققها وافرض قالب SEO أساسيًا ترثه كل قوالب الصفحات.
  • التحقق من البيانات الوصفية. اجمع Reset Blank مع تحقق الحقول كي لا ينشر المؤلفون عناوين أو أوصافًا فارغة أو أطول من اللازم.
  • حوكمة الأسماء البديلة. لا يُنشأ اسم بديل إلا مع تجاوز canonical أو بوصفه أحد تحويلات 301s.
  • ضبط البيئات. احظر CM وQA والتجهيز، واسمح بالإنتاج صراحةً وتحقق منه.
  • ميزانية الزحف على نطاق واسع. قد تضخم المرشحات ونسخ اللغات والمعلمات فضاء العناوين؛ نسّق الخرائط واضبط robots وnoindex بعناية. راجع ميزانية الزحف.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.