SEO للتمرير اللانهائي

كيفية تنفيذ التمرير اللانهائي دون خسارة الفهرسة: لماذا لا يمرر Googlebot، وكيف قد يدمج منفذ الرؤية الطويل صفحتين، وحل الروابط المقسمة وHistory API، وحالة صفحات تصنيفات التجارة الإلكترونية.

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

يحمّل التمرير اللانهائي المحتوى أثناء نزول المستخدم، لكن Googlebot لا يمرر ولا ينقر. تعرض Google الصفحة في منفذ طويل يبدأ عرضه بنحو 411 بكسل على الجوال، وقد يشغّل هذا المنفذ أداة التحميل ويدمج صفحتين تحت رابط واحد. امنح كل دفعة رابطًا دائمًا ومطلقًا، واربط الصفحات بعناصر قابلة للزحف، وحدّث شريط العنوان عبر History API. اختبر HTML المعروض في URL Inspection، وحافظ على حالات الرجوع والتحديث والتحميل والخطأ وإتاحة الوصول.

الخلاصة — لا يمرر Googlebot ولا ينقر، لذلك يكون المحتوى المحجوب خلف التمرير غير مرئي افتراضيًا. تتمثل حيلة Google في العرض ضمن منفذ رؤية طويل جدًا، نحو 411×12 140px للجوال و1024×9 307px لسطح المكتب. لكن الارتفاع نفسه قد يشغل أداة التحميل أثناء العرض، فيدمج الصفحة المنطقية التالية في الحالية وتُفهرس صفحتان تحت رابط واحد. الحل الدائم معماري: روابط دائمة ومطلقة لكل دفعة، مثل ?page=12، تربطها عناصر anchor قابلة للزحف، مع تحديث History API لشريط العنوان عندما تصبح الدفعة هي العنصر الرئيسي. أصبح rel=next وrel=prev قديمين لدى Google منذ 2019، لكن Bing ما زالت تحترمهما. وفي صفحات تصنيفات التجارة الإلكترونية تمثل خرائط الموقع أو خلاصة Merchant Center شبكة اكتشاف احتياطية. تحقق من كل شيء في HTML المعروض بأداة URL Inspection.

Evidence for this claim Google Search does not generally interact with scrolling controls, so infinite-scroll content needs crawlable paginated URLs. Scope: Current official or standards documentation. Confidence: high · Verified: Google: Lazy-loaded content Evidence for this claim The History API can update URLs for loaded page chunks without a full navigation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: History API

توضيح أولي

إذا بحثت عن “Google infinite scroll” فسترى نتائج عن التمرير المستمر في صفحات نتائج Google نفسها، وهي ميزة تجربة استخدام فعّلتها Google ثم أوقفتها في منتصف 2024. لا علاقة لهذا القرار بكيفية زحف Googlebot إلى موقعك. يتناول هذا المقال التمرير اللانهائي كنمط تحميل في صفحاتك وإمكان فهرسة Google لما يحمّله.

القيد الأساسي: لا تتفاعل Google مع صفحتك

ينطلق كل شيء من حقيقة واحدة. تقول وثائق Google للتحميل الكسول إن الأنماط الموصى بها “don’t rely on user actions, such as scrolling or clicking, to load content, which is important as Google Search does not interact with your page.” (ترجمة) «لا تعتمد على إجراءات المستخدم، مثل التمرير أو النقر، لتحميل المحتوى؛ فهذا مهم لأن بحث Google لا يتفاعل مع صفحتك». وتقول وثيقة التقسيم بوضوح أكبر: “Google’s crawlers don’t ‘click’ buttons and generally don’t trigger JavaScript functions that require user actions to update the current page contents.” (ترجمة) «لا تنقر برامج زحف Google الأزرار، ولا تشغل عمومًا وظائف JavaScript التي تتطلب إجراء من المستخدم لتحديث محتوى الصفحة الحالية».

وكما قلت في دليل JavaScript SEO: “Googlebot doesn’t take action on webpages. It’s not going to click things or scroll, but that doesn’t mean it doesn’t have workarounds. As long as content is loaded in the DOM without a needed action, Google will see it. If it’s not loaded into the DOM until after a click, then the content won’t be found.” (ترجمة) «لا ينفذ Googlebot إجراءات في صفحات الويب؛ فلن ينقر أو يمرر، لكن لديه حلولًا بديلة. ما دام المحتوى يُحمّل في DOM من دون إجراء مطلوب فستراه Google، أما إذا لم يدخل DOM إلا بعد نقرة فلن يُعثر عليه».

لذلك يمثل التمرير اللانهائي الذي لا يعمل إلا عند حدث تمرير حقيقي مشكلة اكتشاف محتوى قبل أي شيء آخر.

حيلة Google: منفذ رؤية طويل جدًا

لا تحاكي Google التمرير، بل تعرض الصفحة في منفذ رؤية طويل بصورة غير معتادة، فيقع المحتوى البعيد عدة شاشات داخل منطقة العرض من دون تمرير. كانت أول إشارة مسجلة لذلك ملاحظة جون مولر عام 2017: “Googlebot renders with a very tall viewport, which skews some CSS (often images). Try in Chrome dev-tools, eg 9000px high viewport.” (ترجمة) «يعرض Googlebot الصفحة بمنفذ رؤية طويل جدًا، ما يشوه بعض CSS، وغالبًا الصور. جرّب في أدوات Chrome منفذًا بارتفاع 9000px مثلًا».

الأرقام التي وثقتها هي: يحمّل Google الجوال بحجم شاشة 411×731 بكسل ثم يمد الطول إلى 12 140 بكسل؛ “essentially, it becomes a really long phone with a screen size of 411×12140 pixels. For desktop, it does the same and goes from 1024×768 pixels to 1024×9307 pixels.” (ترجمة) «يصبح عمليًا هاتفًا طويلًا جدًا بحجم 411×12140 بكسل، ويفعل الأمر نفسه لسطح المكتب فينتقل من 1024×768 إلى 1024×9307». لم أر اختبارات حديثة تعيد فحص هذه القيم الدقيقة، وقد تختلف باختلاف طول الصفحة، وترجع الأبعاد الأصلية إلى اختبار مستقل أجراه الباحث JR Oakes. ليست النقطة عدد البكسلات نفسه، بل أن Google تحاكي رؤية موضع بعيد بالارتفاع لا بالحركة.

تعامل مع أبعاد البكسل الدقيقة وسلوك دمج صفحتين أدناه بوصفهما ملاحظات مؤرخة خاصة بالتنفيذ، لا عقدًا ثابتًا للمنصة. لا تنشر Google مواصفة رسمية لأي منهما وقد يتغير سلوك العرض. لا تفترض أن موقعك يتصرف بالطريقة نفسها؛ أكد السلوك الحالي لروابطك باختبار HTML المعروض في القسم التالي.

نمط الإخفاق الذي لا يشرحه أحد: فهرسة صفحتين كواحدة

A height-triggered loader can fire during rendering and merge two logical pages under one indexed URL. المصدر: /technical-seo/javascript-seo/

A normal browser viewport stops after page one. Google's render viewport expands much taller, reaches the infinite-scroll trigger without a real user scroll, and appends page two into the same DOM. The merged DOM is then indexed as one URL instead of two separate pages.

© Patrick Stox LLC · CC BY 4.0 ·

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

شخّصت هذه الحالة عدة مرات. ومن دليل JavaScript SEO:

“Another issue I’ve seen with this setup is, occasionally, two pages get indexed as one. I’ve seen this a few times when people said they couldn’t get their page indexed. But I’ve found their content indexed as part of another page that’s usually the previous post from them.” (ترجمة) «رأيت في هذا الإعداد فهرسة صفحتين أحيانًا كصفحة واحدة؛ وعندما ظن أصحاب الموقع أن الصفحة لم تُفهرس، وجدت محتواها ضمن صفحة أخرى تكون عادة المنشور السابق».

“My theory is that when Google resized the viewport to be longer, it triggered the infinite scroll and loaded another article in when it was rendering. In this case, what I recommend is to block the JavaScript file that handles the infinite scrolling so the functionality can’t trigger.” (ترجمة) «نظريتي أن إطالة Google لمنفذ الرؤية شغلت التمرير اللانهائي وحمّلت مقالًا آخر أثناء العرض؛ لذلك أوصي بحجب ملف JavaScript المسؤول مؤقتًا حتى لا تعمل الوظيفة».

وصف جون مولر الآلية نفسها عام 2022: تعرض Google الصفحة بمنفذ مرتفع، وهذا “would trigger some amount of infinite scrolling” (ترجمة) «سيشغّل قدرًا من التمرير اللانهائي»، وأضاف: “we might have two or three of these pages loaded on one page with infinite scroll, but not everything.” (ترجمة) «قد نحمّل صفحتين أو ثلاثًا من هذه الصفحات في صفحة واحدة ذات تمرير لانهائي، لكن ليس كل شيء». نُقلت الأقوال عبر Search Engine Journal ولم تؤكد من التسجيل الأولي.

تنتج عن ذلك نتيجتان:

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

كيفية التشخيص

استخدم URL Inspection Tool في Search Console واقرأ HTML المعروض لا المصدر الخام. تقول وثائق Google: “You can use the URL Inspection Tool in Search Console to see if all content was loaded. Check the rendered HTML to make sure your content is in the rendered HTML by looking for it in URL Inspection Tool.” (ترجمة) «يمكنك استخدام URL Inspection Tool لمعرفة هل حُمّل كل المحتوى. افحص HTML المعروض وتأكد من وجود المحتوى فيه». ابحث عن محتوى تتوقع وجوده في الصفحة 1 وحدها. فإذا وجدت محتوى الصفحة 2 أو المقال التالي داخل عرض الصفحة 1 فقد أعدت إنتاج خلل الدمج.

يمكنك أيضًا محاكاة منفذ الرؤية الطويل محليًا: افتح Chrome DevTools واضبط منفذًا مخصصًا طويلًا جدًا، نحو 9000px وفق اقتراح مولر، وحمّل الصفحة لترى هل تعمل الأداة بلا تمرير.

الحل: روابط مقسمة إلى صفحات وHistory API

الحل الدائم معماري ومأخوذ من وثيقة Google الحالية للتحميل الكسول. لجعل التمرير قابلًا للفهرسة، “make sure your website supports paginated loading of these chunks” (ترجمة) «تأكد من أن موقعك يدعم تحميل هذه الدفعات في صفحات»:

  • “Give each chunk its own persistent, unique URL.” (ترجمة) «امنح كل دفعة رابطًا دائمًا وفريدًا».
  • “Ensure that the content shown on each URL remains the same every time it’s loaded in a browser” (ترجمة) «تأكد من بقاء المحتوى المعروض في كل رابط نفسه عند كل تحميل»؛ وتقترح Google أرقامًا مطلقة مثل ?page=12.
  • “Avoid using relative elements like ?date=yesterday in these URLs” (ترجمة) «تجنب عناصر نسبية مثل ?date=yesterday في هذه الروابط»؛ فالعنوان الذي يعيد محتوى مختلفًا كل مرة لا يصلح canonical.
  • “Link sequentially to the individual URLs so that search engines can discover the URLs in a paginated set” (ترجمة) «اربط الروابط الفردية بالتسلسل كي تكتشف محركات البحث مجموعة الصفحات»؛ استخدم روابط <a href> حقيقية لا معالجات نقر.
  • “When a new page chunk is loaded in response to the user scrolling, and it becomes the primary visible element for the user, update the displayed URL using the History API.” (ترجمة) «عند تحميل دفعة جديدة استجابة لتمرير المستخدم وصيرورتها العنصر المرئي الأساسي، حدّث الرابط المعروض باستخدام History API».

تكمن أناقة النقطة الأخيرة في أن history.pushState() وreplaceState() يبدلان الرابط في شريط العنوان عند عبور المستخدم حدود كل دفعة، فيطابق الرابط المرئي المحتوى الرئيسي ويمكن تحديث الصفحة ومشاركتها وربط الموضع نفسه. وفي الوقت ذاته توجد روابط ?page=N القابلة للزحف مستقلة، فتصل Google إلى كل دفعة سواء شغّل العارض التمرير أم لا.

ملاحظتان مهمتان للتنفيذ:

  • استخدم IntersectionObserver أو التحميل الكسول الأصلي للمتصفح، لا مستمع scroll خامًا. أداؤه أفضل كثيرًا، وهو آلية «التحميل عند الظهور» التي تعتمدها Google للمحتوى المؤجل.
  • أبقِ مجموعة الصفحات قابلة للاكتشاف بعيدًا عن JavaScript. ضع عناصر anchor حقيقية في DOM، و/أو أدرج روابط ?page=N في خريطة XML. ومهما التقط العارض، تمثل الخريطة والروابط شبكة الأمان.

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

حالة التنقل: يجب أن يعيد الرجوع والتقدم والتحديث والمشاركة بناء العرض نفسه

تغطي History API نصف العقد، وهو تحديث شريط العنوان عندما تصبح دفعة هي المحتوى الرئيسي. والنصف الآخر أن يعيد كل مسار دخول إلى الرابط بناء المحتوى الصحيح، لا موضع التمرير وحده:

  • استخدم pushState() عندما تصبح دفعة المحتوى الرئيسي المرئي لأول مرة؛ فهذه خطوة تنقل حقيقية تجعل زر الرجوع ذا معنى.
  • استخدم replaceState() للتصحيحات التي لا ينبغي أن تنشئ محطة رجوع مستقلة، مثل مزامنة الرابط بعد تمرير سريع عبر عدة دفعات.
  • استمع إلى popstate وأعد عرض أو جلب الدفعة المطابقة للرابط. يعيد سلوك المتصفح الافتراضي موضع التمرير، لا حالة القائمة الديناميكية. فإذا أضاف المحمّل 40 عنصرًا ثم رجع المستخدم، فعليك إعادة بناء العناصر التابعة للصفحة لا مجرد التمرير إليها.
  • لا تعتمد على استعادة التمرير التلقائية وحدها؛ فهي تتحكم في موضع منفذ العرض لا المحتوى الموجود. وإذا تغيرت القائمة بين الزيارات فقد تضع المستخدم في سياق خاطئ.

هذا هو الانضباط نفسه الذي يعتمد عليه حل الروابط المقسمة: يجب أن يعيد رابط الدفعة المحتوى الموعود عند تحميل جديد أو تحديث أو اختبار مباشر في Search Console، لا عند جلبه أول مرة أثناء التمرير فقط.

حالات التحميل والخطأ ونهاية النتائج

يحتاج التطبيق الإنتاجي إلى حالات أكثر من «جار التحميل» و«تم التحميل»:

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

لا يخص هذا Google وحدها، لكنه مستوى الموثوقية نفسه الذي يعتمد عليه حل الروابط المقسمة؛ فإذا أمكن للمحمّل أن يفشل بصمت فلا يمكنك الوثوق بأن الزحف أو جلسة المستخدم التقطت الدفعة المطلوبة.

إتاحة الوصول والأداء: أمران لا يمنحهما التمرير اللانهائي مجانًا

لا يحمل التمرير اللانهائي نتيجة متأصلة جيدة أو سيئة لمؤشرات Core Web Vitals؛ فالنتيجة تتوقف على التنفيذ. توسع كل دفعة DOM، وقد يرفع DOM الكبير تكلفة التخطيط وإعادة حساب الأنماط. راقب تكلفة الإضافة وتحميل الصور وانزياح التخطيط للمحتوى بلا مساحة محجوزة والمهام الطويلة. وفي الصفحات شديدة الطول فكر في جعل الدفعات البعيدة افتراضية بإزالة عقدها من DOM بدل نموه بلا حد.

تحتاج إتاحة الوصول إلى تصميم مقصود، لا افتراض أن «ظهوره يعني سلامته»:

  • يحتاج مستخدمو لوحة المفاتيح إلى الوصول إلى المحتوى الجديد والتذييل أو تنقل نهاية الصفحة من دون أن تستمر الصفحة في النمو تحت ترتيب Tab.
  • يحتاج مستخدمو قارئ الشاشة إلى إعلان المحتوى الجديد من دون مقاطعة؛ ومن المعتاد استخدام منطقة حالة مهذبة لا تنبيه مزعج.
  • صُمم نمط موجز WAI-ARIA لهذه الحالة: مناطق على مستوى المقال داخل حاوية موجز مع سلوك لوحة مفاتيح محدد للتنقل والوصول إلى ما قبل الموجز وبعده.
  • ينبغي ألا ينتقل التركيز أو يضيع بصمت عند تحميل دفعة جديدة.

ليس هذا تنظيفًا اختياريًا؛ بل الفرق بين تمرير يعمل للجميع وآخر لا يعمل إلا لمستخدم فأرة لديه JavaScript ولا يغادر المسار المثالي.

السياق التاريخي: rel=next/prev أصبح قديمًا

إذا تعلمت التقسيم قبل سنوات، فربما استخدمت rel="next" وrel="prev". قدمتهما Google عام 2011 وربطتهما بتوصياتها الأصلية للتمرير الملائم للبحث في 2014. ثم أعلنت عام 2019 أنها لم تكن تستخدمهما منذ سنوات وأوقفتهما رسميًا. وتوضح الوثيقة الحالية أن Google كانت تستخدم <link rel="next" href="..."> و<link rel="prev" href="..."> لبيان علاقة الصفحة التالية والسابقة، لكنها لم تعد تعتمد عليهما، مع احتمال استمرار محركات بحث أخرى في استخدامهما.

لذلك وصفة Google الحالية هي روابط فريدة وروابط قابلة للزحف وHistory API، من دون حاجة إلى rel=next أو rel=prev. لكن «محركات أخرى» تشمل Bing التي ما زالت تحترمهما، فلا ضرر من إبقائهما لفائدة عابرة للمحركات وإتاحة الوصول. لا تنشر Bing إرشادًا خاصًا بالتمرير؛ بل تحذر عمومًا أن bingbot يستطيع عرض JavaScript لكن “it is difficult for bingbot to process JavaScript at scale” (ترجمة) «يصعب على bingbot معالجة JavaScript على نطاق واسع»، لذلك يفيده بديل التقسيم القابل للزحف للسبب نفسه.

صفحات تصنيفات التجارة الإلكترونية: الحالة الأعلى مخاطرة

أكثر تطبيقات التمرير شيوعًا يوجد في صفحات التصنيفات وقوائم المنتجات (PLPs)، حيث تكلف المخاطرة مالًا حقيقيًا. إذا لم تُفهرس منتجات الكتالوج العميقة بعد أول شاشة فلن ترتب، وتفقد زيارات الذيل الطويل للمنتجات. وهذا امتداد لمادة صفحات التصنيفات: تحتاج هذه الصفحات إلى بنية قابلة للزحف تحت تجربة الاستخدام.

هناك شبكتا أمان مهمتان:

  • خرائط XML تضم كل منتج canonical وكل رابط تصنيف مقسم، كي لا يعتمد الاكتشاف على العارض.
  • خلاصة منتجات Merchant Center تزود Google ببيانات المنتجات بعيدًا عما يلتقطه عارض صفحة التصنيف.

وجد تحليل Lumar لأبرز متاجر الأزياء البريطانية أن التمرير اللانهائي هو، بعبارتهم، “the biggest loser when it comes to indexability and SEO friendliness” (ترجمة) «الخاسر الأكبر في قابلية الفهرسة والملاءمة لـSEO» بين أنماط التقسيم. وهذا يذكّر بأن الأمر ليس حالة نظرية نادرة بل الإخفاق الافتراضي لتجربة شائعة. ينبغي قراءة النسب المحددة من تقرير Lumar المباشر قبل الاستشهاد برقم دقيق.

التمرير اللانهائي مقابل التقسيم مقابل تحميل المزيد

تعرض وثيقة Google ثلاثة أنماط بوضوح بشأن المفاضلات. يستخدم التمرير اللانهائي “a single page for all content” (ترجمة) «صفحة واحدة لكل المحتوى»، وهو “intuitive — the user just keeps scrolling” (ترجمة) «بديهي؛ يواصل المستخدم التمرير»، لكنه قد يسبب “scrolling fatigue” (ترجمة) «إرهاق التمرير» بسبب غموض حجم النتائج، ولا يستطيع معالجة أعداد كبيرة جدًا. التقسيم المرقم هو الأكثر متانة لـSEO لأن كل صفحة رابط حقيقي أصلًا. ويقع «تحميل المزيد» بينهما: سليم إذا كان الزر رابطًا حقيقيًا لصفحة مقسمة، وعديم الفائدة إذا كان معالج نقر فقط.

ليس السؤال «أيها مسموح؟»؛ فكلها مسموحة. السؤال هو «أي تجربة تريد، وهل بنيت تحتها طبقة روابط قابلة للزحف؟». ويلخص مولر ذلك عام 2023: “if each piece or virtual page is also accessible and findable through a unique URL, generally it should be fine to have infinite scroll.” (ترجمة) «إذا كان الوصول إلى كل جزء أو صفحة افتراضية والعثور عليها ممكنًا عبر رابط فريد، فينبغي أن يكون التمرير اللانهائي سليمًا عمومًا».

Add an expert note

Pin an expert quote

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