تحويلات JavaScript
دليل لتحويلات JavaScript: لماذا يكون تحويل 301 من الخادم أكثر موثوقية، وكيفية التنفيذ والكشف والتحقق.
اللغات
دليل واحد في هذه الصفحة
- أداة مباشرة ذات صلةrobots.txt Tester
لا تعالج Google تحويل JavaScript إلا بعد العرض. استخدم تحويلات الخادم 301 أو302 أو307 أو308 أولًا، ثم meta refresh، واجعل JavaScript ملاذًا أخيرًا. لخطأ SPA يمكن التحويل إلى 404 حقيقي.
الخلاصة — يستخدم تحويل JavaScript شيفرة داخل الصفحة لإرسالك إلى عنوان URL مختلف بعد تحميلها. يعمل للمستخدمين، لكن محركات البحث تتعامل معه بموثوقية أقل من تحويل خادم «حقيقي» مثل 301. إذا استطعت إعداد 301 فافعل ذلك، واترك تحويلات JavaScript للحالات التي لا تملك فيها خيارًا آخر.
ما تحويل JavaScript؟
يغير تحويل JavaScript التنقل عبر تنفيذ نص برمجي بدل استجابة HTTP من فئة 3xx. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript redirects تستطيع Google معالجة تحويلات JavaScript، لكنها توصي بالتحويلات من جانب الخادم متى أمكن. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
هناك طريقتان عامتان لإرسال شخص من عنوان URL إلى آخر.
الأولى تحويل من جانب الخادم. قبل تحميل الصفحة، يقول الخادم «انتقلت هذه الصفحة، فاذهب إلى هنا» باستخدام رمز مثل 301 للدائم أو 302 للمؤقت. ويتلقى المتصفح ومحرك البحث الرسالة فورًا.
الثانية تحويل JavaScript. تُحمّل الصفحة عاديًا، ثم تعمل شيفرة في المتصفح وترسل المستخدم إلى مكان آخر، مثل:
<script>
window.location.replace("https://example.com/new-page/");
</script>يشعر المستخدم أثناء التصفح بأن الطريقتين متشابهتان تقريبًا، لكنهما مختلفتان جدًا لمحرك البحث، وهذا الفرق هو سبب وجود هذه الصفحة.
لماذا تتعامل محركات البحث معهما بصورة مختلفة؟
تقرأ Google صفحتك على مراحل. أولًا تزحف إليها، أي تنزل HTML الخام. ثم تعرض الصفحة لاحقًا، أي تشغل JavaScript كما يفعل المتصفح. يظهر تحويل 301 من الخادم في الخطوة الأولى، أما تحويل JavaScript فلا يظهر قبل العرض، الذي قد يحدث بعد وقت طويل أو لا يحدث أحيانًا.
تقول Google مباشرة: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (ترجمة) «لا تستخدم تحويلات JavaScript إلا إذا تعذر تنفيذ تحويل من الخادم أو meta refresh» (Google Search Central).
إذن تحويل JavaScript ليس سيئًا، لكنه أقل موثوقية. تصل إليه Google غالبًا في النهاية، لكن 301 الحقيقي أسرع وأكثر يقينًا.
القاعدة البسيطة
- هل تستطيع إعداد 301 أو 302؟ افعل ذلك؛ فهو المعيار الأفضل.
- لا تستطيع تعديل الخادم لكن يمكنك تعديل
<head>في HTML؟ يكون meta refresh بزمن 0 ثانية الخيار التالي. - لا هذا ولا ذاك؟ عندها يكون تحويل JavaScript ملاذًا أخيرًا مقبولًا.
أمران يخطئ فيهما الناس:
- meta refresh ليس تحويل JavaScript. إنه وسم
<meta>في HTML، وتعالجه Google أبكر وبموثوقية أعلى من JS. history.pushState()ليس تحويلًا. يغير ما يظهر في شريط العنوان فقط؛ لا يرسل أحدًا إلى مكان آخر ولا تتبعه محركات البحث.
هل تريد توقيت مسار العرض وتفاصيل التنفيذ وكيفية العثور على تحويلات JS في عملية زحف؟ انتقل إلى تبويب Advanced.
الخلاصة — تحويل JavaScript تحويل من جانب العميل، مثل
window.location.replace()و.hrefو.assign()، ولا تعالجه Google إلا بعد العرض، أي المرحلة الثالثة من الزحف ثم العرض ثم الفهرسة. يظهر 301 من الخادم وقت الزحف، بينما ينتظر تحويل JS قائمة العرض بلا مدة ثابتة منشورة، وقد يفشل العرض كليًا. ترتيب Google الموثق هو الخادم ثم meta refresh ثم JavaScript، وتقول الوثائق ألا تستخدم JS إلا عند تعذر الخيارين الآخرين. بعد تفسيره بنجاح تصبح الوجهة إشارة توحيد أساسية دائمة، وقد استخدمته Google في مدونتها عندما تعذرت البدائل، لكن ذلك لا يثبت تطابق PageRank أو نتائج الترتيب مع 301؛ فهو ملاذ أخير لا إشارة إزعاج. من الاستخدامات المشروعة المنصات المقيدة بلا إعداد خادم وصفحات خطأ SPA التي تشير إلى 404 حقيقي. نفذه بواسطةwindow.location.replace()داخل<head>، واحذف المصدر من خريطة الموقع، وأعد توجيه الروابط الداخلية، وتأكد من قدرة Googlebot على جلب JS. أما meta refresh فمن HTML، حيث 0 ثانية دائمة وأي تأخير مؤقت، وhistory.pushState()وreplaceState()ليسا تحويلين.
ما الذي يُعد تحويل JavaScript؟
يعتمد التنقل البرمجي على العرض والتنفيذ، لذا لا يكافئ تحويل HTTP على مستوى البروتوكول. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript redirects المعالجة ممكنة لكنها لا تضمن توقيتًا دقيقًا أو فهرسة. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
ينقل تحويل JavaScript المتصفح إلى عنوان URL جديد بواسطة شيفرة من جانب العميل. وهذه الطرق الشائعة وفروقها:
window.location.replace("url")— ينقل ويحذف عنوان URL الأصلي من سجل الجلسة. وهو الخيار المفضل؛ إذ يتجاوز زر الرجوع مصدر التحويل بدل إعادة المستخدم إليه مباشرة.window.location.href = "url"— ينقل لكنه يبقي الأصل في السجل، فيعيد زر الرجوع إلى صفحة التحويل وقد ينشئ حلقة. ويتصرفdocument.location.hrefوwindow.location.assign("url")بالطريقة نفسها.history.pushState()وhistory.replaceState()— ليسا تحويلين. يعيدان كتابة شريط العنوان بلا تنقل أو إشارة HTTP، فلا تعاملهما برامج الزحف كتحويل. تستخدمهما SPA لتغييرات URL داخل التطبيق، وتحتاج إلى روابط<a href>حقيقية أو تنقلات فعلية كي تكون قابلة للزحف.
الحد الفاصل المهم هو أن .replace() و.href و.assign() تطلق جميعها تنقلًا حقيقيًا للمستند، ولا يختلف بينها سوى سجل الجلسة، بينما لا ينقل pushState() وreplaceState() إطلاقًا؛ فهما يغيران حالة السجل وشريط العنوان فقط. ولا يمثل أي منها HTTP 301؛ فكلمة «تحويل» هنا اختصار للتنقل من جانب العميل لا لرمز حالة.
غالبًا ما يُجمع meta refresh (<meta http-equiv="refresh" content="0;url=...">) مع تحويلات JS، لكنه توجيه HTML يُحلل قبل تشغيل JavaScript، ولذلك هو فئة مستقلة أكثر موثوقية يغطيها قسم لاحق.
كيف تعالج Google تحويل JavaScript؟
هذه هي النقطة المحورية. يعمل مسار Google على مراحل، ويلتقط تحويل JS وتحويل الخادم في مرحلتين مختلفتين:
- الزحف — يجلب Googlebot عنوان URL ويقرأ HTML الخام. ويظهر 301 أو302 أو307 أو308 من الخادم هنا مباشرة.
- قائمة العرض — تنتظر الصفحات التي تعيد
200دورها للعرض. تقول وثائق Google إن الصفحة “may stay on this queue for a few seconds, but it can take longer than that.” (ترجمة) «قد تبقى في القائمة بضع ثوان، لكن الأمر قد يستغرق أطول». لا تنشر Google مدة خدمة ثابتة، لذا عامل الانتظار كغير متوقع بدل افتراض عدد معين من الأيام أو الأسابيع. - العرض والفهرسة — يشغل Chromium بلا واجهة JavaScript. وهذه أول لحظة يوجد فيها تحويل JS من منظور Google.
تنطبق هنا الفكرة نفسها التي أشرحها في الزحف وJavaScript SEO: العرض خطوة منفصلة عن الجلب، وكل ما يعتمد عليه يرث تأخيره ومخاطره.
والخطر حقيقي. تقول Google: “While Google attempts to render every URL Googlebot crawled, rendering may fail for various reasons. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (ترجمة) «رغم محاولة Google عرض كل عنوان يزحف إليه Googlebot، قد يفشل العرض لأسباب مختلفة. وهذا يعني أن Google قد لا ترى تحويل JavaScript مطلقًا إذا فشل عرض المحتوى» (Google Search Central). وقبل معالجة التحويل، أو دائمًا إذا فشل العرض، قد تبقي Google صفحة المصدر الفارغة في فهرسها.
ترتيب التفضيل الرسمي لدى Google
تعرض وثائق التحويلات تسلسلًا من الأكثر إلى الأقل موثوقية:
- تحويلات الخادم — 301 و308 للدائم، و302 و307 للمؤقت. هي الأفضل لكل شيء: تظهر وقت الزحف ولا لبس فيها.
- Meta refresh — على مستوى HTML. يُعامل زمن 0 ثانية كتحويل دائم مثل 301، وأي تأخير كتحويل مؤقت.
- تحويلات JavaScript — الملاذ الأخير.
تقول Google: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (ترجمة) «لا تستخدم تحويلات JavaScript إلا إذا تعذر تحويل الخادم أو meta refresh». تمرر التحويلات الدائمة إشارة التوحيد إلى الوجهة، وتبقي المؤقتة الأصل في النتائج. وتجد تفاعل ذلك مع اختيار النسخة الأساسية في التوحيد الأساسي.
هل تنتقل قيمة الروابط؟
تسرد وثائق Google تنقل JavaScript بالموقع ضمن طرق التحويل الدائم، وتقول إن الوجهة تصبح إشارة التوحيد بعد تفسير Google للتحويل؛ لذلك فالقول “JS redirects don’t pass PageRank” (ترجمة) «تحويلات JS لا تمرر PageRank» خرافة خاطئة. لكن الوثائق لا تثبت تطابق النتيجة أو فوريتها أو موثوقيتها مع 301 من الخادم؛ فهي تصف الإشارة الأساسية ولا تضمن تدفق PageRank أو الترتيب أو التوقيت نفسه. الصياغة الصادقة: يمرر 301 الإشارة وقت الزحف بيقين عال، بينما يمررها JS فقط إذا نجح العرض ومتى نجح، ولا تعد Google بمطابقة النتيجة واحدًا لواحد. هذه الفجوة، لا ضياع القيمة، هي تكلفة JavaScript الحقيقية.
ولهذا أيضًا لا تكون تحويلات JS سبب عقوبة بذاتها. تصبح مشكلة إزعاج فقط عند استخدامها للإخفاء، كعرض صفحة للزاحف وتحويل المستخدم إلى أخرى أو إرسال مستخدمي الجوال إلى نطاق غير مرتبط. تتعلق سياسة Google عن التحويلات المخادعة بهذه النية لا بالتقنية.
متى يكون تحويل JavaScript الأداة المناسبة؟
هناك حالات مشروعة:
- المنصات المقيدة. لا تمنح بعض إعدادات الاستضافة المشتركة أو CDN أو CMS وصولًا إلى قواعد تحويل الخادم. يكون JS بديلًا صالحًا، وقد استخدمته Google في مدونة مشرفي المواقع لأن Gary Illyes قال: “that was the only thing we could use for 1:1 redirects, and it works on Google” (ترجمة) «كان الشيء الوحيد الذي استطعنا استخدامه لتحويلات واحد إلى واحد، وهو يعمل في Google» (OnCrawl).
- معالجة أخطاء SPA. تؤيد Google ذلك صراحة: “Use a JavaScript redirect to a URL for which the server responds with a
404HTTP status code.” (ترجمة) «استخدم تحويل JavaScript إلى عنوان يستجيب له الخادم برمز HTTP 404» (Google Search Central). تستطيع SPA التي تحل مسارًا سيئًا التحويل إلى نقطة 404 حقيقية كي تعالج Google الخطأ بدل فهرسة soft 404.
أما ترحيل عناوين URL الدائمة فليس هذا أداته؛ استخدم 301. أكرر النقطة نفسها في ترحيل المواقع: تحويل JavaScript ملاذ أخير وقد لا تراه Google.
مولدات المواقع الثابتة: فخ aliases في Hugo
مفاجأة شائعة: أنشأت خاصية aliases: في frontmatter لدى Hugo تاريخيًا صفحات HTML تستخدم meta refresh، لا تحويلات 301 من الخادم، وفعلت مولدات ثابتة أخرى شيئًا مشابهًا. تتغير الإعدادات الافتراضية بين الإصدارات، لذا افحص الناتج المنشور فعليًا. إذا لم تنتج aliases: تحويلات 301، فأنت تحتاج قواعد على مستوى المنصة، مثل _redirects في Netlify أو Cloudflare Workers أو vercel.json في Vercel، ومع Hugo استخدم disableAliases: true. أغطي ذلك في SEO لـHugo.
أفضل ممارسات التنفيذ
إذا كان تحويل JavaScript خيارك الوحيد فعلًا:
- استخدم
window.location.replace()لا.href. تقول Search Engine Journal إن تحويلات JS “typically usewindow.location.replace()function rather thanwindow.location.hrefto avoid UX redirect loops” (ترجمة) «تستخدم عادة دالة replace بدل href لتجنب حلقات التحويل في تجربة المستخدم» (SEJ). - ضعه في
<head>لا<body>. تحلل المتصفحات HTML بالتسلسل وتشغل النصوص عند الوصول إليها؛ لذا “position JavaScript redirects in the<head>tag rather than<body>to minimize delay” (ترجمة) «ضع تحويلات JavaScript في head بدل body لتقليل التأخير» (OnCrawl). - حوّل إلى الوجهة النهائية بقفزة واحدة. تحويل JS إلى صفحة تحول بدورها 301 ينشئ سلسلة تهدر ميزانية الزحف وقد تظهر في GSC كـخطأ تحويل.
- احذف المصدر من خريطة XML. يجب أن تسرد الخرائط عناوين أساسية قابلة للفهرسة لا عناوين محولة.
- أعد توجيه الروابط الداخلية مباشرة إلى الوجهة.
- تأكد من قدرة Googlebot على جلب JS. إذا كان النص الخارجي محجوبًا بواسطة
robots.txtفلن تستطيع Google عرضه ولن ترى التحويل.
كيفية اكتشاف تحويلات JavaScript
لا تعلن عن نفسها في رأس مثل 301، لذا يجب إجراء العرض:
- زاحف مع تفعيل عرض JS. توصي OnCrawl بالزحف مع “JavaScript rendering enabled (5-second timeout minimum)” (ترجمة) «تفعيل عرض JavaScript بمهلة لا تقل عن خمس ثوان»؛ ويستطيع Screaming Frog وAhrefs Site Audit العرض. من دونه تبدو الصفحة كـ
200عادية. - Chrome DevTools. يعرض تبويب Network مع Preserve log التنقل من جانب العميل، وتكشفه إضافة Redirect Path أيضًا.
- في Search Console يظهر تحويل JS المعالج بنجاح تحت Page with redirect، وهي الحالة الطبيعية نفسها لأي مصدر غير أساسي. لكن الملصق غير مضمون في كل فحص؛ فهو يعكس ما جلبته Google وعرضته وفسرته ووحدته في لحظة العينة، وقد يظهر عنوان بحالة أخرى أو بلا حالة تحويل بعد من دون خطأ لديك.
ما الذي سأفعله فعليًا؟
الخادم أولًا دائمًا. ثم meta refresh بزمن 0 عندما تستطيع تعديل HTML لا الخادم. وJavaScript فقط عند تعذر كليهما، باستخدام window.location.replace() في <head> وخريطة نظيفة وفحص أن Googlebot يعرض التحويل. لكل شيء دائم أو عالي القيمة، تستحق موثوقية 301 الإضافية أي جهد تقريبًا.
ملخص الذكاء الاصطناعي
خلاصة مكثفة لنسخة Advanced:
- تحويل JavaScript من جانب العميل، مثل
window.location.replace()و.hrefو.assign(). لا يُعالج إلا بعد العرض في المرحلة الثالثة من الزحف ثم العرض ثم الفهرسة، بينما يظهر 301 من الخادم وقت الزحف. - قائمة العرض هي الخطر: قد تبقى الصفحة فيها ثواني أو أطول بلا مدة ثابتة، وقد يفشل العرض كليًا فلا ترى Google التحويل وتبقي المصدر مفهرسًا.
- ترتيب Google: الخادم (301/302/307/308) ثم meta refresh ثم JavaScript. تقول الوثائق: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (ترجمة) «لا تستخدم تحويلات JavaScript إلا إذا تعذر الخياران الآخران».
- تصبح الوجهة إشارة توحيد بعد التفسير، لذلك خرافة عدم تمرير PageRank خاطئة، لكن Google لا توثق تطابق التدفق أو الترتيب أو التوقيت مع تحويل الخادم. ولا تكون JS عقوبة إلا عند استخدامها للإخفاء.
- استخدامات مشروعة: منصات مقيدة، وقد استخدمتها Google في مدونتها، وصفحات خطأ SPA التي تحول إلى 404 حقيقي.
- Meta refresh ليس JS: هو من HTML؛ 0 ثانية دائم وأي تأخير مؤقت. و
history.pushState()وreplaceState()ليسا تحويلين. aliases:في Hugo تنتج meta refresh لا 301، وهو فخ شائع.- التنفيذ:
window.location.replace()في<head>، قفزة واحدة، حذف المصدر من الخريطة، إعادة توجيه الروابط، وإتاحة JS لـGooglebot. - الاكتشاف: زحف مع عرض JS وChrome DevTools أو Redirect Path وحالة Page with redirect في GSC.
الوثائق الرسمية
إرشادات المصادر الأولية عن التحويلات وJavaScript.
- التحويلات وبحث Google — ترتيب التفضيل، والتعامل الدائم والمؤقت، وقواعد تأخير meta refresh.
- أساسيات JavaScript SEO — مسار العرض واستخدام تحويل SPA إلى 404.
- إصلاح مشكلات JavaScript المرتبطة بالبحث — soft 404 والعرض وتصحيح JS غير القابل للمعالجة.
- التحويلات المخادعة — متى يصبح التحويل إخفاءً ومخالفة.
Bing وMicrosoft
- مساعدة Bing Webmaster — مدخل الإرشادات الحالية. عند الكتابة لم تكن هناك صفحة تحويلات مخصصة بعنوان ثابت؛ ويعرض Bingbot JavaScript بموثوقية أقل من Googlebot، ما يزيد مخاطرة التحويلات المعتمدة على JS وحده.
اقتباسات من المصدر
تصريحات موثقة من Google والعاملين في البحث. يقود كل رابط في وثائق Google مباشرة إلى المقطع المقتبس.
Google: ترتيب التفضيل ومخاطر العرض
- “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (ترجمة) «لا تستخدم تحويلات JavaScript إلا إذا تعذر تحويل الخادم أو meta refresh». — وثائق Google Search Central. الانتقال إلى الاقتباس
- “While Google attempts to render every URL Googlebot crawled, rendering may fail for various reasons. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (ترجمة) «قد يفشل العرض لأسباب مختلفة، وعندها قد لا ترى Google تحويل JavaScript مطلقًا». — وثائق Google Search Central. الانتقال إلى الاقتباس
Google: حالة استخدام SPA المعتمدة
- “Use a JavaScript redirect to a URL for which the server responds with a
404HTTP status code (for example/not-found).” (ترجمة) «استخدم تحويل JavaScript إلى عنوان يستجيب له الخادم برمز HTTP 404، مثل/not-found». — وثائق Google Search Central. الانتقال إلى الاقتباس
Gary Illyes، من Google
- عن تحويلات JS عمومًا: “Js redirects are probably not a good idea though.” (ترجمة) «ربما لا تكون تحويلات JS فكرة جيدة» (8 يوليو 2020).
- عن استخدام Google لها عند تعذر البدائل: “We used JS redirects on webmasters.googleblog.com because that was the only thing we could use for 1:1 redirects, and it works on Google.” (ترجمة) «استخدمناها لأنها كانت الخيار الوحيد لتحويلات واحد إلى واحد، وهي تعمل في Google». التغطية
Search Engine Journal: التنفيذ وقيمة الروابط
- “JavaScript redirects typically use
window.location.replace()function rather thanwindow.location.hrefto avoid UX redirect loops.” (ترجمة) «تستخدم تحويلات JavaScript عادة replace بدل href لتجنب حلقات تجربة المستخدم». القراءة - “JavaScript redirects are not SEO-friendly and should be avoided when alternatives exist… Only implement JavaScript redirects when server-side alternatives are genuinely unavailable.” (ترجمة) «تحويلات JavaScript غير ملائمة لـSEO وينبغي تجنبها عند وجود بدائل؛ ولا تنفذها إلا عند غياب بدائل الخادم فعلًا». القراءة
أنواع التحويلات: ورقة مرجعية
متى تراها Google وكيف تعاملها
| الطريقة | وقت رؤية Google | المعاملة | الموثوقية |
|---|---|---|---|
301 أو 308 من الخادم | وقت الزحف | دائم | الأعلى |
302 أو 307 من الخادم | وقت الزحف | مؤقت | الأعلى |
Meta refresh بزمن 0 | تحليل HTML | دائم | عالية |
Meta refresh متأخر (>0 ثانية) | تحليل HTML | مؤقت | عالية |
| تحويل JavaScript | بعد العرض | يتبع التنقل | الأدنى |
history.pushState() أو replaceState() | — | ليس تحويلًا | لا ينطبق |
طرق تحويل JavaScript
| الشيفرة | سلوك السجل | هل تستخدمها؟ |
|---|---|---|
window.location.replace("url") | يحذف المصدر من السجل | نعم، موصى بها |
window.location.href = "url" | يبقي المصدر وقد ينشئ حلقة رجوع | تجنبها للتحويل |
window.location.assign("url") | مثل .href | تجنبها للتحويل |
document.location.href = "url" | اسم بديل لـ.href | تجنبها للتحويل |
حقائق سريعة
- ترتيب Google: الخادم ثم meta refresh ثم JavaScript؛ استخدم JS فقط عند استحالة الأولين.
- بعد التفسير تصبح وجهة JS إشارة توحيد؛ خرافة عدم تمرير PageRank خاطئة، لكن Google لا توثق تطابق النتيجة مع 301. الخطر هو التأخير أو فشل العرض لا عقوبة PageRank موثقة.
- ليست تحويلات JS عقوبة إلا عند استخدامها للإخفاء.
aliases:في Hugo تعني meta refresh لا 301.- يظهر التحويل المعالج كـPage with redirect في GSC.
هل أستخدم تحويل JavaScript؟ قائمة قرار
تابع من الأعلى وتوقف عند أول «نعم».
- هل أستطيع إعداد
301أو302أو307أو308من الخادم؟ ← افعل ذلك وتوقف. - هل أستطيع تعديل
<head>في HTML لا إعداد الخادم؟ ← استخدم meta refresh بزمن 0 للنقل الدائم وتوقف. - هل يستحيل الخياران بسبب منصة مقيدة، أو هل هذه صفحة خطأ SPA ينبغي أن تصل إلى 404 حقيقي؟ ← تحويل JavaScript مقبول؛ تابع.
إذا كنت تستخدم تحويل JavaScript
- استخدم
window.location.replace()لا.hrefأو.assign(). - ضع النص في
<head>مبكرًا قدر الإمكان. - حوّل مباشرة إلى الوجهة النهائية بلا سلسلة.
- احذف المصدر من خريطة XML.
- أعد توجيه الروابط الداخلية إلى الوجهة.
- تأكد أن JS غير محجوب في
robots.txtكي يعرضه Googlebot. - لا تعرض للزاحف صفحة وتحول المستخدم إلى أخرى، أي إخفاء.
- تحقق بزحف مع عرض JS وفحص Page with redirect في GSC.
تحويل JavaScript الموصى به
ضع هذا في <head> لينفذ مبكرًا قدر الإمكان في ترتيب التحليل:
<head>
<script>
window.location.replace("https://example.com/new-page/");
</script>
</head>اختيار replace() هو المفتاح؛ فهو يحذف عنوان التحويل من سجل الجلسة، فلا يعيد زر الرجوع المستخدم إليه.
Meta refresh بزمن 0، الخيار التالي عند تعذر الخادم
ليس JavaScript، لكنه البديل الصحيح عندما تستطيع تعديل HTML لا الخادم. تعامل Google التأخير 0 ثانية كتحويل دائم:
<head>
<meta http-equiv="refresh" content="0; url=https://example.com/new-page/">
</head>ما لا ينبغي استخدامه كتحويل
يعيد history.pushState() كتابة شريط العنوان بلا تنقل ولا إشارة HTTP، فلا تتبعه برامج الزحف:
// NOT a redirect — only changes the URL bar, no navigation happens
history.pushState({}, "", "/new-page/");إذا أردت جعل تغيير مسار SPA قابلًا للزحف، فاستخدم رابط <a href> حقيقيًا أو تنقلًا فعليًا، لا استدعاء History API فقط.
صفحة خطأ SPA إلى 404 حقيقي، نمط تؤيده Google
عندما تحل SPA مسارًا مجهولًا، أرسل المستخدم إلى نقطة تعيد 404 فعليًا كي تعالج Google الخطأ بدل soft 404:
// On an unresolved route in your SPA:
window.location.href = "/not-found"; // /not-found must return HTTP 404 أدوات العثور على تحويلات JavaScript وفحصها
- Screaming Frog SEO Spider — فعل عرض JavaScript بمهلة كافية حتى لا تبدو الصفحات كـ
200عادية. - Ahrefs Site Audit — يعرض الصفحات ويكشف التحويلات والسلاسل والروابط الداخلية المحولة.
- Chrome DevTools، تبويب Network — فعل Preserve log وراقب التنقل من جانب العميل.
- Redirect Path — إضافة Chrome تكشف تحويلات العميل والخادم.
- Google Search Console، فحص URL — شاهد كيفية زحف Google وعرضه وهل انتهى إلى Page with redirect.
- تقرير فهرسة الصفحات في GSC — يسرد Page with redirect العناوين المحولة، ويكشف Redirect error السلاسل والحلقات.
أخطاء ينبغي تجنبها مع تحويلات JavaScript
- استخدام
window.location.hrefأو.assign()بدل.replace(). يبقي href المصدر في السجل فينشئ زر الرجوع حلقة. استخدم replace الذي يحذف المصدر. - استخدام JS في ترحيل دائم عالي القيمة مع توفر 301. لا يُعالج JS إلا بعد العرض الذي قد يتأخر أو يفشل. استخدم 301 من الخادم واحفظ JS للمنصات المقيدة وأخطاء SPA.
- إنشاء سلسلة بدل الوصول إلى الوجهة بقفزة واحدة. تهدر السلاسل الزحف وقد تظهر كـخطأ تحويل. أشر مباشرة إلى الوجهة.
- إبقاء المصدر في خريطة XML. تسرد الخرائط عناوين أساسية قابلة للفهرسة لا المحولة؛ احذفه بعد تشغيل التحويل.
- حجب نص التحويل بواسطة
robots.txt. إذا تعذر جلب JS فلن ترى Google التحويل وقد يبقى المصدر مفهرسًا. تحقق من قابلية الزحف باستخدام أداة robots.txt. - افتراض أن
aliases:في Hugo تنتج 301. أنتجت تاريخيًا صفحة meta refresh. افحص الناتج واستخدم قواعد المنصة مثل_redirectsأو Workers أوvercel.jsonمعdisableAliases: true، كما في Hugo SEO. - معاملة
history.pushState()وreplaceState()كتحويل. يغيران العنوان بلا تنقل أو HTTP. استخدم رابطًا أو تنقلًا حقيقيًا. - عرض صفحة للزاحف وإرسال المستخدم إلى أخرى. يحول هذا التحويل المشروع إلى مخالفة تحويلات مخادعة. أرسل الجميع إلى الوجهة نفسها. وعند التنفيذ احتفظ بالفرق الدقيق بين
.hrefوwindow.location.replace()، واستخدم رابط<a href>حقيقيًا حيث يلزم الزحف.
مشكلات JavaScript الشائعة
يبقى عنوان المصدر مفهرسًا طويلًا بعد تشغيل التحويل
- السبب المرجح: الصفحة ما زالت في قائمة العرض أو فشل العرض.
- الإصلاح والفحص: نفذ اختبارًا حيًا في أداة فحص URL داخل Search Console على المصدر. إن لم يُعرض بعد فانتظر؛ لا تعطي Google مدة ثابتة، لذا أعد الفحص دوريًا. وإذا استمر الفشل، فتأكد أن نص التحويل غير محجوب كما في مشكلة
robots.txtأدناه.
يعيدك زر الرجوع مباشرة إلى صفحة التحويل
- السبب المرجح: يستخدم التحويل
window.location.hrefأو.assign()بدل.replace()، فيبقى عنوان المصدر في سجل الجلسة. - الإصلاح والفحص: غير النص إلى
window.location.replace(). تحقق بالوصول إلى الوجهة ثم الضغط على زر الرجوع؛ ينبغي أن يتجاوز مصدر التحويل تمامًا.
يعرض GSC “Crawled – currently not indexed” بدل “Page with redirect”
- السبب المرجح: لم تعرض Google الصفحة بعد أو يفشل العرض لهذا العنوان.
- الإصلاح والفحص: ازحف إلى العنوان بأداة تعرض JS، مثل Screaming Frog أو Ahrefs Site Audit مع تفعيل العرض، لتأكيد تشغيل التحويل في العميل. وتأكد أن النص غير محجوب في
robots.txt؛ إذ تؤكد أداة اختبار robots.txt قدرة Googlebot على جلبه.
يظهر مسار SPA غير المحلول كـsoft 404 في GSC
- السبب المرجح: يحول المسار إلى وجهة لا تعيد رمز HTTP
404فعليًا. - الإصلاح والفحص: وجه التحويل إلى نقطة تستجيب فعلًا بـ
404، وهو النمط الذي تؤيده Google، ثم أعد فحص URL لترى تغير الحالة من soft 404 إلى 404 صحيح.
تظل صفحة تحول بواسطة JS ظاهرة كاستجابة 200 عادية في تقرير الزحف
- السبب المرجح: عمل الزاحف بلا تفعيل عرض JavaScript، فلم ير سوى استجابة HTML الأولية لا التنقل من جانب العميل.
- الإصلاح والفحص: أعد الزحف مع تشغيل عرض JS، واجعل مهلة خمس ثوان نقطة بداية معقولة، وتأكد من ظهور التحويل.
إثبات سريان التحويل فعلًا
| الاختبار | النتيجة المتوقعة | تفسير الفشل | نافذة المراقبة | محفز التراجع |
|---|---|---|---|---|
| أداة robots.txt على عنوان نص التحويل | النص مسموح لـGooglebot | محجوب؛ لا تستطيع Google جلب النص أو عرض التحويل | فوري | أصلح قاعدة robots.txt أو أزلها قبل الاعتماد على التحويل |
| زحف إلى المصدر مع تفعيل عرض JS بواسطة Screaming Frog أو Ahrefs Site Audit | يبلغ الزاحف عن تنقل من العميل إلى الوجهة المقصودة | تظل الصفحة 200 بلا تنقل؛ لا يعمل العرض | فوري، زحف واحد | إذا لم يعمل بعد إصلاح robots.txt، استخدم meta refresh بزمن 0 أو تحويل خادم |
| اختبار GSC الحي لفحص URL على المصدر | يظهر الناتج المعروض تنفيذ التحويل إلى الوجهة | يفشل العرض أو لا يظهر الناتج تنقلًا | فوري للاختبار الحي | إذا تكرر فشل العرض، اعتبر المنصة غير قادرة على دعم JS واحصل على وصول للخادم أو استخدم meta refresh |
| تقرير فهرسة الصفحات في GSC للمصدر | يظهر المصدر تحت “Page with redirect” | يظل مفهرسًا أو Crawled – currently not indexed أو محتوى مكررًا | أسبوعان إلى أربعة وفق جدول Google | إذا لم يصنف تحويلًا بعد أكثر من أربعة أسابيع، أعد فحوص حجب العرض |
| فحص زر الرجوع يدويًا بعد الوصول إلى الوجهة | يتجاوز زر الرجوع صفحة المصدر | يعيد الزر إلى المصدر | فوري | غير النص من .href أو .assign() إلى window.location.replace() |
اختبر نفسك: تحويلات JavaScript
خمسة أسئلة سريعة عن طريقة عمل تحويلات JavaScript ومتى تستخدمها. اختر إجابة لكل سؤال، ثم تحقق.
موارد تستحق وقتك
مقالات ذات صلة كتبتها
- مشكلات JavaScript SEO وأفضل ممارساته — جانب العرض الذي يمنح تحويلات JS مخاطر التوقيت.
- دليل المبتدئين إلى SEO التقني — موضع التحويلات والعرض في الصورة الأكبر.
محاضراتي
- كيف يعمل البحث (SlideShare) — شرحي للزحف والعرض والفهرسة والترتيب، وهو المسار الذي يجعل تحويل JS حدثًا في المرحلة الثالثة. وينطبق تنبيهي الدائم: “This is my understanding of systems… not going to be 100% complete or accurate.” (ترجمة) «هذا فهمي للأنظمة، ولن يكون كاملًا أو دقيقًا بنسبة 100%».
من مصادر القطاع
- التحويلات وبحث Google (Google Search Central) — ترتيب التفضيل الرسمي والمعاملة الدائمة والمؤقتة.
- التحويلات المخادعة (Google Search Central) — حد سياسة الإزعاج بين التحويل المشروع والإخفاء.
- تحويلات JavaScript وSEO: متى وكيف تستخدمها (Search Engine Journal) — إرشادات التنفيذ والفرق بين
replace()و.href. - هل تحويلات JavaScript ملائمة لـSEO؟ (Search Engine Journal) — خلاصة تجنبها عند وجود بدائل.
- تحويلات JavaScript وSEO: الدليل الكامل (OnCrawl) — موضع النص وأدوات الكشف واقتباس Gary Illyes الكامل.
- هل تحويلات JavaScript سيئة لـSEO؟ (Conductor) — إجابة موجزة بأسلوب الأسئلة الشائعة.
- دليل أنواع التحويلات (Lumar) — تصنيف أشمل يضع تحويلات JS في سياقها.
سجل التغييرات
تم التحديث في 13 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 13 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 18 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.