لديك بعض الصفحات المكررة في نطاقك، وتحتاج إلى الإشارة إلى علامة الكانونيكال للصفحات المكررة باستخدام JavaScript في الصفحة الأصلية. (حذف الصفحات المكررة ليس خيارًا لأنها تجلب حركة مرور كبيرة)
هل يمكن لأحد اقتراح كيفية تحديث وسم href باستخدام JavaScript في discourse؟
إليك الحل يا @KranthiKiranGude، هذه هي الطريقة التي يمكنك بها تغيير سمة href باستخدام JavaScript. أولاً، قم باختيار عنصر DOM، ثم غيّر السمة.
<script>
var uC = document.querySelectorAll("link[rel='canonical']")[0];
var newURL = "https://my.coolforum.com/newlink";
uC.setAttribute("href", newURL);
</script>
بطبيعة الحال، ستحتاج إلى بعض المنطق بناءً على الصفحة التي تريد العمل عليها.
مثال عام للمنطق:
<script>
if("the_actual_page_url_or_id" == "my_interesting_page_url_or_id")
{
var uC = document.querySelectorAll("link[rel='canonical']")[0];
var newURL = "https://my.coolforum.com/newlink";
uC.setAttribute("href", newURL);
}
</script>
أتمنى أن يكون هذا مفيدًا.
مرحبًا @neounix،
لقد جربت الكود الخاص بك، ولكن بدلاً من تحديث الرابط (href)، تم إنشاء وسم سكريبت جديد:
![]()
لقد قمت بتحديث هذا السكريبت في قسم “/head”.
مرحبًا @KranthiKiranGude
الرجاء نشر الكود الدقيق الذي استخدمته وأين أضفته بالضبط، بما في ذلك لقطة شاشة للإدخال في قسم <head> الذي ذكرته.
شكرًا لك!
يبدو طبيعيًا أن يتم توليد جافا سكريبت جديد عند إضافة المزيد من جافا سكريبت.
ستحتاج إلى فحص DOM في وحدة تحكم مطوري الويب (العناصر)، وليس في كود مصدر الصفحة، بالمناسبة.
أفهم ذلك.
بمناسبة الحديث، أنت تفتقد علامة اقتباس افتتاحية في جملة الشرط الخاصة بالسكربت…
مرحبًا @neounix،
لقد نجح الأمر في وحدة تحكم المطورين. لكن في مصدر الصفحة، لا يزال يشير إلى عنوان URL الفعلي.
إذا لم أكن مخطئًا، فإن محركات البحث ستأخذ من مصدر الصفحة وليس عناصر DOM. أرجو تصحيحي إذا كنت مخطئًا.
أنا لست متأكدًا من ذلك، بصراحة. كنت أعتقد سابقًا أن محركات البحث الحديثة (GoogleBot) ستقرأ DOM، ولكن الآن بعد أن أفكر في الأمر، يبدو منطقيًا أن محركات البحث قد تقرأ المصدر فقط وليس DOM.
لكن .. عندما قمت بالبحث على Google للتحقق من ذلك، قال:
تُحترم إشارات SEO في DOM (عناوين الصفحات، ووصف الميتا، والعلامات القياسية، وعلامات روبوت الميتا، إلخ). كما يمكن لمحركات البحث الزحف إلى المحتوى المضاف ديناميكيًا في DOM وفهرسته. علاوة على ذلك، في حالات معينة، قد تتفوق إشارات DOM حتى على العبارات المتناقضة في كود HTML المصدري. سيتطلب ذلك المزيد من العمل، لكنه كان الحال في عدة اختبارات قمنا بها.
مرجع:
https://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
مرحبًا @neounix،
شكرًا جزيلاً على مساعدتك. دعني أيضًا أقوم بالبحث في هذا الجزء. لكنني ممتن جدًا لك حقًا.
أهلاً وسهلاً بك!
يرجى النشر مرة أخرى وإخبارنا بنتائج بحثك.
هناك طريقة أخرى، كنت أعمل عليها في وقت فراغي مؤخرًا، وهي تعديل ملف مكتبة Ruby الخاصة بـ Discourse هذا مباشرةً:
قد تفكر في اتباع نهج مشابه إذا لم تنجح معك تقنية معالجة DOM باستخدام JavaScript، @KranthiKiranGude
مرحبًا @neounix،
لقد اختبرت الصفحة باستخدام أداة فحص الروابط، وقد اعترفت جوجل بعنوان URL المحدّث.
ممتاز… يسعدني سماع أن الأمر نجح.
شكرًا لك على الاختبار والعودة بالتعليق.
ملاحظة: طريقة JS DOM أسهل بكثير من التعامل مع canonical_url.rb ![]()
لست متأكدًا مما إذا كان تجاوز الرابط الأساسي باستخدام JavaScript سيعمل، لأن هذا الأمر يتعلق أكثر بمستوى الزحف (أي الجزء الذي يسترجع ويجمع البيانات) بدلاً من مستوى الفهرسة (الجزء من البوت الذي يفسر البيانات ويخزنها في فهرس البحث).
نصيحة غير مطلوبة: قد ترغب في قراءة هذا الموضوع حتى تتمكن من وضع هذه التعديلات في إضافة:
نعم، أنا أيضًا. لا تزال الإجابة غير مؤكدة في هذه النقطة.
لكن عمليات البحث على Google حول هذا الموضوع تُظهر نتائج كثيرة، حيث يقوم العديد من الأشخاص بذلك، والكثير منهم يقولون إن Google تحترم تغييرات نموذج كائن المستند (DOM)، بينما يقول آخرون إنها لا تفعل ذلك، لذا يبدو أنه لا يوجد إجماع قوي أو ساحق حول هذا الموضوع. انظر على سبيل المثال:
أعتقد أنه إذا كنت سأقوم بذلك، فسأقوم (1) بحذف وسم الرابط المفضل الأصلي من مصدر الصفحة، ثم (2) إدراج وسم رابط مفضل جديد في نموذج كائن المستند باستخدام JavaScript.
ثم، مع مرور الوقت، يمكننا ببساطة النظر إلى وحدة تحكم بحث Google ونرى ما اختارت Google كروابط مفضلة.
انظر أيضًا:
نظرًا لأن الكثير من الناس يعتبرون هذا الأمر مهمًا لتحسين محركات البحث (SEO)، فقد قمت بالتحقق من ذلك مرة أخرى، في ضوء هذا التأكيد من @KranthiKiranGude.
وفقًا لموقع developers.google.com: فهم أساسيات تحسين محركات البحث (SEO) للغة JavaScript:
تدعم Googlebot مكونات الويب. عندما تقوم Googlebot بعرض صفحة ما، فإنها تسطّح محتوى ظل DOM (shadow DOM) و DOM العادي (light DOM). وهذا يعني أن Googlebot يمكنها رؤية المحتوى الظاهر فقط في HTML المعروض. وللتأكد من أن Googlebot لا تزال قادرة على رؤية محتواك بعد عرضه، استخدم اختبار متوافق مع الجوال أو أداة فحص الرابط ثم انظر إلى HTML المعروض.
وبما أن (1) @KranthiKiranGude استخدم أداة فحص الرابط (URL Inspection Tool) في اختباره، و (2) فقد أكد أن الرابط الأساسي (canonical) قد تم تغييره كما هو متوقع بهذه الطريقة، فإن النتيجة المنطقية وفقًا لجوجل هي أن GoogleBot بالفعل “ترى” وتسجّل هذا التغيير في محتوى DOM بعد عرض الصفحة.
المصدر:
نعم، أؤيد تمامًا فكرة قيام جوجل بتسطيح محتوى DOM بهذه الطريقة أثناء الفهرسة.
لكن بعض/معظم وسوم meta تحمل دلالاتها على مستوى بروتوكول HTTP وليس على مستوى بروتوكول HTML، رغم أنها موجودة في HTML. لقد ركّزت على عبارة ‘أثناء الفهرسة’ لأنني لست متأكدًا مما إذا كان جوجل يسطّح DOM بهذه الطريقة ويأخذ عنوان URL القياسي المحدّث في الاعتبار أثناء الزحف.
(وبعبارة أخرى، لست متأكدًا مما إذا كان محتوى DOM يشمل أيضًا ‘البيانات الوصفية المضمنة في المحتوى’. نعم، هو يراها بهذه الطريقة، لكنني لست متأكدًا مما إذا كان سيستخدمها بهذه الطريقة).
ربما تشرح هذه المقالة الأمر بشكل أفضل: How Google Crawls Your Website and Indexes Your Content
عندما يحتاج جوجل إلى زحف المواقع التي تعتمد على JavaScript، تكون هناك مرحلة إضافية مطلوبة لا تحتاجها محتويات HTML التقليدية. تُعرف هذه المرحلة بمرحلة التصيير، والتي تستغرق وقتًا إضافيًا. إن مرحلة الفهرسة ومرحلة التصيير مرحلتان منفصلتان، مما يتيح لجوجل فهرسة المحتوى غير المعتمد على JavaScript أولاً.
في الواقع لا، آسف. تلك المقالة من www.hillwebcreations.com لا تذكر حتى نموذج كائن المستند (DOM)، أو كيفية فحصه، وما إلى ذلك. وعلى الأقل بالنسبة لي، تبدو “قديمة ومتحيزة” (ليست حديثة ولا واقعية).
شخصيًا، أفضّل هذين المرجعين المكتوبين جيدًا، وكلاهما يتمتع بمصداقية أكبر، وواقعية، وموثق جيدًا، في رأيي:
والأول حيث قاموا فعليًا بإجراء الاختبار (وذلك قبل وقت طويل من انتقال GoogleBot إلى نواة Chromium التي يمكنها قراءة نموذج كائن المستند (JavaScript) بشكل أفضل):
اختبرنا كيفية زحف Googlebot إلى JavaScript وما تعلمناه
بعد بحثي، أميل إلى الاتفاق مع مطوري Google على أنهم سيindex (وسيحصلون على إشارات تحسين محركات البحث من) ما يتم العثور عليه باستخدام أداة فحص الرابط، ومن خلال هذه الأداة يمكننا “تقييم” إشارات تحسين محركات البحث والمحتوى. النقاش الذي قدمته Google واضح، وواقعي، وذو مصداقية، وغير تخميني.
لأن @KranthiKiranGude قد أكد أن رابطه الكنسي تم تحديثه باستخدام أداة فحص الرابط، والتي قالت Google، بصفتها السلطة المختصة، إنها “كل ما تحتاجه” لمعرفة كيف تنظر Google إلى صفحة من منظور تحسين محركات البحث.
ملخص تقني
نظرًا لأن Google تستخدم إشارات تحسين محركات البحث مما يمكن رؤيته من خلال أداة فحص الرابط الخاصة بها؛ والحقيقة أن مطوري Google أوضحوا أن إشارات تحسين محركات البحث الخاصة بهم يمكن تحليلها مباشرةً باستخدام أداة فحص الرابط؛ والحقيقة أن التغييرات في JavaScript التي أجراها @KranthiKiranGude على نموذج كائن المستند (DOM) مرئية في أداة فحص الرابط، فإن هذا “أكثر من كافٍ”، في رأيي.
أتمنى أن يكون هذا مفيدًا.
نعم، تنص هذه المقالة بوضوح على أنهم شاهدوا علامات كانونيكال تم إدراجها ديناميكيًا تتصرف تمامًا كما لو كانت موجودة في كود المصدر. أنت محق (كان ينبغي أن أقرأ هذا بعمق أكبر في المرة الأولى التي نشرتها فيها).
على الرغم من أن ثلاث صفحات من أصل أربع أشرت إليها في هذا الموضوع، بما في ذلك الصفحة التي زودتنا بالإجابة، أقدم حتى من تلك المقالة التي نشرتُها ![]()
بالمناسبة @RGJ، آسف على الارتباك حول عبارة “غير حالي”…
عندما أستخدم مصطلح “قديم” أو “غير حالي”، فإنني أتحدث عن المفاهيم والأفكار، وليس التاريخ الفعلي لأي مقالة.
بعض الأشخاص يكتبون مقالات بتواريخ من “اليوم” بينما المفاهيم فيها “قديمة” (وخاطئة)، بينما كتب آخرون مقالات منذ 10 سنوات ولا تزال ذات صلة عالية حتى اليوم.
هذا ما أعنيه بـ “قديم” أو “غير حالي”، فهو يعتمد على “المفاهيم” وليس التواريخ المادية المكتوبة على الورق أو في مقالة ويب. آسف لأي ارتباك قد يسببه استخدامي لهذه المصطلحات بهذه الطريقة في ردي.
ما هو مهم، على الأقل في رأيي، هو أننا قدمنا حلاً لـ @KranthiKiranGude، وقد أكد هو أنه يعمل، وبناءً على منشورك المشكك، قمنا كلاهما بإجراء بحث إضافي حول هذه القضية.
لقد تحققنا من (1) أن هذه الطريقة، وهي تغيير رابط الكانونيكال باستخدام JavaScript، صحيحة؛ و(2) أن مطوري Google قد أكدوا ذلك؛ و(3) أن لدينا وسيلة للتحقق منها كالمستخدمين، باستخدام أداة فحص الرابط (URL Inspection Tool) (كما فعل @KranthiKiranGude وشاركها معنا).
كل التوفيق وشكرًا جزيلاً على هذا “التبادل” حول هذا الموضوع المثير للاهتمام، وعلى مساعدتكم في جعل الحل أكثر صحة وقوة.
سأنتقل الآن إلى مهام أخرى (ما زلت أواجه صعوبة في تعلم Ruby on Rails بعد أكثر من عقد من البرمجة بلغة PHP)؛ حيث أن هذا الموضوع قد تحقق منه بالكامل “تم إنجاز المهمة” ![]()
إلى اللقاء… كل التوفيق!
