hreflang وlang وdir في المواقع العربية: تدقيق لـ 29 موقعًا لعلامات تجارية عربية

معظم المواقع العربية ثنائية اللغة تعلن اللغة والاتجاه، لكن كثيرًا منها يخطئ في ذلك. في 2 أكتوبر 2026 قرأنا الشيفرة الحية للصفحات الرئيسية لـ29 علامة تجارية عربية: 9 منها (31%) بلا hreflang في رأس الصفحة، و7 من أصل 20 مجموعة hreflang بلا x-default، و3 من 27 صفحة عربية أعلنت قيمة lang خاطئة أو فارغة.
أبرز النقاط
- 20 من 29 صفحة رئيسية تحمل hreflang في رأس الصفحة. مصر متأخرة: 4 من 9 مواقع مصرية بلا hreflang، مقابل 5 من 20 في الخليج.
- مجموعتان كانتا معطوبتين: ar-SA وen-SA على رابط واحد، وصفحة عربية لا تذكر إلا بديلها الإنجليزي.
- 3 من 27 صفحة عربية تعلن lang=”en” أو lang فارغة أو ar-SA على موقع مصري. و3 أخرى تُغفل dir.
- Google يتجاهل lang في تحديد اللغة. أما قارئات الشاشة والمدققات الإملائية والخطوط وBing فلا تتجاهله.
- استخدم ar وحدها ما لم يتغير المحتوى حسب الدولة، واحتفظ بصفحة ar عامة كصفحة شاملة.
الفحص بالأرقام: 29 صفحة رئيسية لعلامات تجارية عربية
عبر 29 صفحة رئيسية لعلامات تجارية عربية فُحصت في 2 أكتوبر 2026، ظهر hreflang في 20 منها وغاب عن 9. وكانت اللغة والاتجاه صحيحين في الغالب: 24 من 27 صفحة عربية أعلنت lang صحيحة، و24 من 27 ضبطت dir على عنصر html. واستحوذت المواقع المصرية على 4 من عيوب lang وdir الستة.
صفحتان رئيسيتان عرضتا الإنجليزية افتراضيًا، لذا فقاعدة الصفحات العربية 27.
| الدولة | المواقع التي وصلنا إليها | الصفحات العربية | hreflang في رأس الصفحة | x-default (من المجموعات) | lang خاطئة أو فارغة | dir غائبة عن html |
|---|---|---|---|---|---|---|
| المملكة العربية السعودية | 9 | 9 | 7 | 5 من 7 | 1 | 1 |
| الإمارات العربية المتحدة | 7 | 6 | 5 | 3 من 5 | 0 | 0 |
| مصر | 9 | 8 | 5 | 2 من 5 | 2 | 2 |
| قطر | 2 | 2 | 2 | 1 من 2 (1 تعذّر التحقق منه) | 0 | 0 |
| الكويت | 2 | 2 | 1 | 1 من 1 | 0 | 0 |
| الإجمالي | 29 | 27 | 20 (69%) | 12 من 20 | 3 من 27 | 3 من 27 |
متجر تجزئة إقليمي أعاد توجيهنا جغرافيًا إلى متجره في مصر مُدرج في صف الإمارات. ومع وجود من 2 إلى 9 مواقع لكل دولة، تعامل مع فجوة مصر كنمط يستحق الفحص، لا كإحصاء للسوق.
كيف أجرينا الفحص
فريق VOCTOS، 2 أكتوبر 2026، Chrome على سطح المكتب، دون تسجيل دخول، من اتصال في القاهرة. صفحة واحدة لكل علامة: الصفحة الرئيسية العربية (/ar أو النسخة العربية للعلامة)، وإلا فالصفحة الرئيسية الافتراضية. بعد التحميل انتظرنا من 3 إلى 4.5 ثانية وقرأنا DOM الحي بـJavaScript: قيمتا lang وdir على html، والاتجاه المحسوب للـbody، وروابط hreflang، وcanonical.
الحدود: زيارة واحدة لكل موقع؛ والشيفرة المُضافة بعد 4.5 ثانية لا تُرصد. لم نقرأ خرائط الموقع ولا ترويسات HTTP، لذا فعبارة “بلا hreflang” تعني عدم وجوده في رأس الصفحة. لم نتحقق من روابط العودة. لا توجد بيانات ميدانية لـCore Web Vitals. 8 من 37 صفحة رئيسية (22%) أعادت تحديًا لكشف الروبوتات أو صفحة فارغة واستُبعدت.
ما أخطاء hreflang التي وجدناها، وماذا تُعطّل؟
مجموعتان من 20 مجموعة hreflang كانتا معطوبتين تمامًا، و7 من 20 بلا x-default. المعطوبتان تخالفان القواعد الأساسية لدى Google: كل نسخة لغوية تحتاج رابطها الخاص، وكل صفحة يجب أن تذكر نفسها وكل بدائلها. أما غياب x-default فيُعد فجوة لا خطأً، لأن Google يوصي به دون أن يشترطه.
رابط واحد للغتين. صيدلية سعودية تعلن ar-SA وen-SA وx-default، وكلها تشير إلى رابط واحد. المجموعة تزعم أن صفحة واحدة هي النسخة العربية والإنجليزية معًا، فلا يجد Google ما يبدّل بينه. امنح الإنجليزية رابطها الخاص، أو احذف الإشارة حتى يوجد.
لا إشارة ذاتية. الصفحة العربية لبنك مصري لا تذكر إلا بديلها الإنجليزي. ويقول دليل Google للنسخ المحلية إن كل نسخة يجب أن تذكر نفسها وجميع النسخ الأخرى، وإن الإشارات لا تُحتسب إلا حين تشير صفحتان إلى بعضهما. قرأنا الصفحة العربية فقط، لذا لا نعرف إن كانت الصفحة الإنجليزية تشير إليها.
غياب x-default. 7 مجموعات بلا x-default: 2 سعودية و2 إماراتية و3 مصرية. وكانت أكبر المجموعات لشركة طيران قطرية بـ129 بديلًا، ومتجر تجزئة إقليمي بـ11 بديلًا عبر خمس دول، وبوابة عقارية إماراتية بـ9 لغات دون x-default.
هل تستخدم الصفحة العربية ar أم ar-SA أم ar-EG؟
استخدم ar وحدها ما لم يتغير المحتوى العربي حسب الدولة. يقبل Google رمز اللغة وحده ويعامل المنطقة كرمز ثانٍ اختياري. لجأ إلى ar-SA أو ar-AE أو ar-EG حين تختلف الأسعار أو العملة أو المخزون أو التوصيل أو النصوص القانونية، واحتفظ بصفحة ar عامة واحدة كصفحة شاملة لكل متحدث عربي آخر.
يدعم Google رموز اللغات وفق ISO 639-1 مع رموز مناطق اختيارية وفق ISO 3166-1 Alpha 2، ولا شيء غير ذلك. ويترتب على هذا ثلاثة فخاخ عربية:
- رموز اللهجات لا تعمل. arz (العربية المصرية) وarb (العربية الفصحى) ليسا من ISO 639-1، لذا يتجاهلهما Google. كما تفضّل W3C استخدام ar على arb.
- رمز الدولة وحده لغة أخرى. في قائمة ISO 639، يرمز sa إلى السنسكريتية وae إلى الأفستية.
- رموز المناطق الثلاثية لا تفعل شيئًا. ar-KSA وar-UAE غير صالحين. استخدم SA أو AE أو EG أو QA أو KW أو OM أو BH أو JO.
في فحصنا، استخدمت 8 من 20 مجموعة رموز مناطق، و11 استخدمت رموز اللغة فقط (لم تُصنَّف قائمة الـ129 بديلًا). إن كنت تستخدم ar-SA وar-EG، ينصح Google بصفحة شاملة؛ فبدون صفحة ar عامة، ينتهي الباحث في الأردن إلى x-default. وللفروع الخاصة بكل دولة، راجع دليلنا للسيو المحلي متعدد الفروع.
رأس صفحة صحيح لصفحة عربية لها نسختان سعودية ومصرية
رأس الصفحة العربية الصحيح يعلن lang وdir على عنصر html، وcanonical يشير إلى الصفحة نفسها، ومجموعة hreflang متطابقة على كل نسخة: العربية العامة، والعربية السعودية، والعربية المصرية، والإنجليزية، وx-default. المثال أدناه للصفحة العربية العامة. وكل نسخة شقيقة تكرر البدائل الخمسة نفسها ولا تغيّر إلا canonical وlang.
<!doctype html>
<html lang="ar" dir="rtl">
<head>
<meta charset="utf-8">
<title>Arabic page title</title>
<link rel="canonical" href="https://example.com/ar/">
<!-- Identical set on all five versions, each listing itself -->
<link rel="alternate" hreflang="ar" href="https://example.com/ar/">
<link rel="alternate" hreflang="ar-SA" href="https://example.com/ar-sa/">
<link rel="alternate" hreflang="ar-EG" href="https://example.com/ar-eg/">
<link rel="alternate" hreflang="en" href="https://example.com/en/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">
</head>
في الصفحة السعودية يصبح canonical هو /ar-sa/ وتبقى lang على ar أو تصبح ar-SA؛ إذ تنصح W3C بأقصر وسم يؤدي الغرض. وتأخذ الصفحة الإنجليزية lang=”en” دون dir=”rtl”. كل href رابط كامل كما يشترط Google، وx-default يشير إلى صفحة اختيار اللغة.
إن كنت تفضّل تسليم مجموعتك الحالية لغيرك: افحصوا hreflang العربي والإنجليزي لموقعي مقابل Search Console.
كيف يعمل canonical مع hreflang؟
يجب أن تشير كل نسخة لغوية بـcanonical إلى نفسها، وأن يكون كل رابط hreflang هو الرابط القانوني نفسه. وتقول إرشادات Google بشأن canonical إنه يجب اختيار canonical بنفس اللغة. فتوجيه canonical الصفحة العربية إلى الصفحة الإنجليزية يطلب من Google معاملة العربية كنسخة مكررة، وهذا يناقض زوج hreflang.
- طابق كل href في hreflang مع canonical تمامًا: البروتوكول والنطاق والشرطة المائلة الأخيرة وحالة الأحرف.
- أبقِ روابط المعاملات مثل ?currency=SAR خارج المجموعة.
- ترجم المحتوى الرئيسي: يعدّ Google الصفحات المحلية مكررة فقط حين يبقى محتواها دون ترجمة، لذا فالقوائم العربية حول نص إنجليزي تمثل خطرًا.
- في أداة URL Inspection في Search Console، قارن canonical المُعلن بـcanonical الذي اختاره Google لكل لغة.
صفحة رئيسية لبنك كويتي لم يكن فيها hreflang ولا canonical. ولمعرفة ما تنتجه منصات المتاجر المستضافة، راجع تدقيقنا لسيو سلة مقابل زد على 20 متجرًا سعوديًا.
رأس الصفحة أم خريطة الموقع أم ترويسة HTTP: أين يوضع hreflang؟
اختر طريقة واحدة. يعامل Google عناصر link في HTML وترويسات Link في HTTP وخرائط XML كطرق متكافئة، ويقول إن استخدام الثلاث معًا لا يضيف أي فائدة في البحث، بل يصعّب الصيانة فقط. استخدم رأس الصفحة للمجموعات الصغيرة، وخريطة الموقع للمجموعات الكبيرة أو القوالب الكثيرة، وترويسة HTTP لملفات PDF وغيرها من الملفات غير HTML.
رأس الصفحة هو الأسهل في الفحص، لكن كل صفحة تحمل المجموعة كاملة. فالبدائل الـ129 لشركة الطيران القطرية موجودة في HTML صفحة رئيسية واحدة؛ وبنحو 85 بايت للسطر، نقدّر أنها نحو 11 كيلوبايت من الشيفرة الخام قبل الضغط، في كل مشاهدة للصفحة.
خريطة الموقع تنقل هذا الحمل خارج الصفحة: أعلن مساحة الأسماء xhtml وأدرج كل نسخة، بما فيها النسخة نفسها، تحت كل رابط. ويقول Google إن هذه الروابط الفرعية لا تُحتسب ضمن حد روابط خريطة الموقع. وترويسة HTTP تناسب ملف PDF لقائمة أسعار عربية:
Link: <https://example.com/ar/prices.pdf>; rel="alternate"; hreflang="ar",
<https://example.com/en/prices.pdf>; rel="alternate"; hreflang="en"
هل يقرأ Google خاصية lang في html؟
ليس لتحديد اللغة. يحدد Google لغة الصفحة من محتواها المرئي، ولا يستخدم lang أو hreflang أو الرابط لهذه المهمة. لكن lang تظل مهمة: فقارئات الشاشة تستخدمها لاختيار النطق، والمتصفحات تستخدمها للخطوط والتدقيق الإملائي، وقد وثّق Bing أن content-language وhtml lang من إشارات الموقع الجغرافي.
إرشادات Google للمواقع متعددة المناطق تقول إنه لا يستخدم “أي معلومات لغة على مستوى الشيفرة مثل خاصيات lang”.
- معيار WCAG 2.2 رقم 3.1.1 (المستوى A) يشترط لغة صفحة محددة برمجيًا، وتذكر MDN أن نطق قارئات الشاشة هو الغرض الرئيسي. فالصفحة العربية ذات lang=”en” تطلب من قارئات الشاشة لدى مستخدميك استخدام قواعد الإنجليزية.
- وبالنسبة للطباعة، تشير W3C إلى أن lang تختار الخطوط المناسبة وتؤثر في التدقيق الإملائي؛ وlang الفارغة تعني لغة غير معروفة. ويغطي دراستنا للخطوط العربية على الويب جانب الخطوط.
- وبالنسبة للترجمة، تقول MDN إن Google Translate يحترم translate=”no”، لذا ضعها على أسماء العلامات التجارية ورموز المنتجات.
- منشور Bing لمشرفي المواقع عام 2011، وهو أدق إرشادات Bing التي وجدناها، يضع وسم meta الخاص بـcontent-language فوق html lang (نسخة مؤرشفة). وتقول W3C إنه يجب عدم استخدام وسم meta هذا أبدًا. اضبط html lang بشكل صحيح، وإن كانت زيارات Bing مهمة لك، فأرسل ترويسة HTTP باسم Content-Language بدلًا منه.
dir وCSS المنطقي وbdi: التعامل مع النصوص المختلطة بين العربية واللاتينية
ضع dir=”rtl” على عنصر html، واكتب التخطيط بخصائص CSS المنطقية، واعزل كل مقطع لاتيني داخل النص العربي. وتقول W3C إنه يجب ألا يُضبط الاتجاه الأساسي بـCSS وحدها أبدًا. أرقام الهواتف والأسعار ورموز المنتجات وأسماء المستخدمين هي أول ما ينكسر، وdir=”auto” أو bdi يصلحان معظمها.
في صفحة البنك السعودي التي تغيب فيها dir، يُحسب اتجاه الـbody من اليسار لليمين ويُطبّق RTL في مستوى أدنى من الشجرة. ولأن الاتجاه يُورَّث، فإن أي نافذة منبثقة أو شريط ملفات تعريف الارتباط أو أداة دردشة تُعرض خارج ذلك الغلاف تعود إلى LTR. في الأمثلة أدناه، تُستخدم الحروف الكبيرة بدلًا من النص العربي، كما في أمثلة W3C.
/* Logical properties flip with dir, no RTL override file needed */
.card {
margin-inline-start: 1rem; /* left in LTR, right in RTL */
padding-inline-end: 0.5rem;
border-inline-start: 3px solid;
text-align: start;
}
<!-- Phone numbers and inputs keep LTR order -->
<p>CALL US ON <span dir="ltr">+966 11 000 0000</span></p>
<input type="tel" name="phone" dir="ltr">
<!-- Product codes inside Arabic sentences -->
<p>MODEL <bdi>SM-A556E</bdi> IS IN STOCK</p>
<!-- User content of unknown direction -->
<p dir="auto">{{ review_text }}</p>
margin-inline-start متاحة كـBaseline منذ يناير 2020، لذا فإن الخصائص المنطقية لا تحتاج إلى بديل احتياطي. وdir=”auto” يأخذ الاتجاه من أول حرف قوي. bdi يعزل مقطعًا نصيًا حين لا يوجد عنصر يُضبط عليه dir.
هل تكون روابط الصفحات بالعربية أم بحروف لاتينية؟
الاثنان يعملان مع Google، إذ يقبل دليلها لبنية الروابط الكلمات المحلية، ويطلب UTF-8، ويريد ترميز الأحرف غير ASCII بالنسبة المئوية في خاصيات href. الروابط العربية تطابق لغة الباحث، والروابط المكتوبة بحروف لاتينية تبقى قصيرة. اختر أسلوبًا واحدًا للموقع واستخدم الصيغة المُرمّزة نفسها في hreflang وcanonical وخريطة الموقع.
كل حرف عربي يأخذ بايتين في UTF-8، فيصبح ستة أحرف بعد الترميز. مثال Google نفسه، كلمة نعناع ذات الأحرف الخمسة، تتحول إلى : أي 30 حرفًا. ورابط من خمس كلمات بنحو 25 حرفًا يتجاوز 150 حرفًا بعد الترميز.
الكتابة بالحروف اللاتينية ليس لها قاعدة إملائية موحدة، فينتهي الأمر بالعلامة الواحدة إلى عدة تهجئات للكلمة نفسها. موقفنا: روابط عربية للصفحات العربية، وروابط إنجليزية للصفحات الإنجليزية، وhreflang للربط بينهما.
ووردبريس: ما تطبعه TranslatePress وWPML وPolylang
الإضافات الثلاث تُخرج hreflang تلقائيًا، لكن سلوكها مع x-default يختلف. قبل الاعتماد على أي منها، تأكد أن القالب يطبع language_attributes() داخل وسم html. هذه الدالة وحدها هي التي يكتب فيها ووردبريس lang وdir=”rtl” معًا للموقع العربي، ووسم html المكتوب يدويًا يتجاوزها.
- يجب أن يبدأ ملف header.php في قالبك بـ
<html 1000>. والدالة المصدر تضيف dir=”rtl” عندما تكون is_rtl() صحيحة، وتأخذ lang من لغة الموقع. أما كتابة<html lang="en">حرفيًا فتتجاوز الاثنين. - تقول وثائق WPML إن الإضافة تُدرج hreflang وتحدّثه تلقائيًا في الصفحات الأصلية والمترجمة.
- يقول دليل Polylang إن hreflang تلقائي، لكن x-default لا يظهر إلا في الصفحة الرئيسية ذات إعادة التوجيه التلقائي.
- تطبع الإعدادات المتقدمة في TranslatePress hreflang للدولة وhreflang مستقلًا عن المنطقة افتراضيًا، وتوفر خيارًا لصيغة HTML lang، وتجعل x-default مفتاحًا لكل لغة على حدة.
تدقيق hreflang وlang وdir في 10 دقائق
عشر دقائق تكفي لزوج قوالب واحد: عرض المصدر لما يرسله الخادم، وDevTools لما ينتهي إليه المتصفح، وزاحف لروابط العودة، وSearch Console لما اختاره Google. نفّذه على الصفحة الرئيسية وصفحة تصنيف أو خدمة واحدة ومقال واحد، بالعربية والإنجليزية. ستة روابط تكشف معظم أخطاء القوالب.
- عرض المصدر (Ctrl+U): توجد lang وdir على عنصر html في HTML الخام.
- في وحدة تحكم DevTools، نفّذ
[document.documentElement.lang, document.documentElement.dir, getComputedStyle(document.body).direction]. المتوقع: ar وrtl وrtl. - اعرض المجموعة:
[...document.querySelectorAll('link[rel=alternate][hreflang]')].map(l => l.hreflang + ' ' + l.href). - كل قيمة تشير إلى رابط فريد، والصفحة تذكر نفسها، وx-default موجود.
- افتح أحد البدائل وتأكد أنه يشير إلى الصفحة الأصلية.
- canonical يطابق الرابط الحالي واللغة.
curl -sI https://example.com/ar/يعرض أي ترويسة Link أو Content-Language.- افحص الموقع بزاحف مع تفعيل hreflang؛ تقرير hreflang في Screaming Frog يرصد روابط العودة المفقودة والإشارات الذاتية وx-default.
- شغّل أداة URL Inspection على كل نسخة لغوية. تقرير International Targeting متوقف، لذا تجاوزه.
- على الجوال، تأكد أن رقم الهاتف والسعر ورمز المنتج تظهر بالترتيب الصحيح.
رأينا
معظم المواقع العربية في فحصنا تملك الشيفرة، لكن عددًا أقل يجعلها متسقة. نبدأ بإصلاح lang وdir لأنهما يكلفان سطرًا واحدًا ويخدمان كل زائر. ثم اجعل hreflang رتيبًا: رموز لغة فقط، وصفحة عربية عامة واحدة، وx-default في كل مجموعة، وخريطة موقع حين تتجاوز المجموعة نحو 20 بديلًا.
رقم 20 هذا قاعدة تقريبية من عندنا، وليس حدًا من Google. والفرق المصرية لديها المكسب الأكبر: 4 من 9 صفحات رئيسية مصرية لم يكن فيها hreflang في رأس الصفحة.
الاختبار الأفضل من “هل لدينا hreflang؟” هو أن يروي كل رابط عربي القصة نفسها في أربعة مواضع: lang وdir وhreflang وcanonical. إذا تطابقت الأربعة في أهم قوالبك، انقل المجموعة إلى خريطة الموقع ودقّق كل ربع سنة. وإذا اختلفت، أصلح عنصر html أولًا ثم رأس الصفحة. دقّقوا قوالب موقعي العربية من حيث lang وdir وhreflang.
الأسئلة الشائعة
هل أحتاج إلى hreflang إذا كانت العربية والإنجليزية على النطاق نفسه؟
نعم، إذا كان لكل نسخة رابطها الخاص. فhreflang لا علاقة له بالنطاقات؛ بل يربط النسخ اللغوية للصفحة نفسها أينما كانت. وتنطبق قواعد Google على مجلدي /ar/ و/en/ كما تنطبق على النطاقات المنفصلة تمامًا: روابط كاملة، وإحالة ذاتية في كل صفحة، وروابط عودة من كل بديل.
هل يستخدم الموقع السعودي ar-SA أم ar فقط؟
استخدم ar ما لم يختلف المحتوى العربي بحسب الدولة. فGoogle تقبل رمز اللغة وحده، ورمز المنطقة اختياري. أضف ar-SA حين تحمل الصفحات السعودية أسعارها أو مخزونها أو نصوصها القانونية الخاصة، وأبقِ صفحة ar عامة حتى يحصل الناطقون بالعربية في مصر أو الأردن أو المغرب على مطابقة منطقية.
تتجاهل Google السمة lang، فلماذا أصلحها؟
لأن Google قارئ واحد من عدة قرّاء. فقارئات الشاشة تستخدم lang لاختيار النطق، والمتصفحات تستخدمه للخطوط والتدقيق الإملائي، ويجعل WCAG 2.2 لغة الصفحة المحددة برمجيًا متطلبًا من المستوى A. وتدرج إرشادات مشرفي المواقع لدى Bing السمة html lang ضمن إشارات الموقع. وإصلاحه سطر واحد في القالب.
يشير hreflang لديّ بـ ar-SA وen-SA إلى الرابط نفسه. هل هذا خطأ؟
نعم. فهذه المجموعة تقول إن رابطًا واحدًا هو النسخة العربية والإنجليزية معًا، فلا يبقى لـ Google ما يبدّل بينه. امنح النسخة الإنجليزية رابطها الخاص، ثم أدرج الرابطين في الصفحتين مع الإحالات الذاتية. وإلى أن يوجد رابط إنجليزي منفصل، احذف التعليق الإنجليزي بدلًا من نشر تعليق متناقض.
هل غياب x-default خطأ؟
لا. توصي Google بـ x-default كبديل احتياطي للمستخدمين الذين لا تطابق لغتهم أيًا من نسخك، وصمّمته لصفحات اختيار اللغة. ومن دونه تختار Google نسخة بنفسها. وبالنسبة لعلامة تجارية عربية بالعربية والإنجليزية، وجّه x-default إلى صفحة اختيار اللغة أو إلى النسخة التي ينبغي أن يراها الزوار غير المطابقين.
اقرأ أيضًا
كل مقالات Technical SEO
RTL في قوالب ووردبريس: كيف تتعامل 10 قوالب شائعة مع التخطيط العربي

روابط الصفحات العربية: عربية مُرمّزة أم حروف لاتينية أم إنجليزية؟ ماذا تستخدم 24 موقعًا عربيًا

هل تحجب المواقع العربية زواحف الذكاء الاصطناعي؟ فحصنا ملف robots.txt لـ50 علامة تجارية

الخطوط العربية على الويب وسرعة الصفحات: ما الذي تحمّله 29 صفحة رئيسية لعلامات تجارية عربية
