seo · 8 دقائق قراءة

قاعدة robots.txt التي لا تمنع شيئًا

هذا الموقع نشر واحدة. كانت تُحلَّل، وتجتاز التحقّق، والنيّة مكتوبة في تعليق فوقها مباشرةً، ولم تمنع أسابيع شيئًا إطلاقًا — بينما كان ثلث كل طلب تُرسله جوجل يذهب إلى الصفحات التي كان يُفترض أن توقفها.

القاعدة

يقدّم Next.js حمولةً إلى جانب كل صفحة للتنقّل في العميل. هذه تقع عند عناوين مثل /contact/index.txt، ولا نفع فيها لمحرّك بحث. فقال الملفّ:

Disallow: /index.txt$
Disallow: /*/index.txt$

اقرأها بصوت مرتفع فهي صائبة بداهةً. كل index.txt، في الجذر وفي أي مجلّد، ممنوع. بقيت في الإنتاج أسابيع.

لماذا لم تطابق شيئًا

ترسو $ بالنمط عند نهاية الرابط — لا عند نهاية المسار. وNext لا يطلب تلك الحمولات عاريةً. بل يُلحق بها بصمة بناء:

/contact/index.txt?_rsc=gzsk8

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

الجزء الذي يجعلها خطرة

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

أصلح ذلك حذفُ حرفَي $. فصيغة البادئة تطابق كل ما يبدأ بذلك المسار، بسلسلة الاستعلام، وهو ما كان مقصودًا طوال الوقت.

القواعد الثلاث كاملةً

لمطابق جوجل ثلاثة سلوكيات لا رابع لها. فـ* تنوب عن أي سلسلة حروف. و$ ترسو عند نهاية الرابط. ما عدا ذلك بادئة حرفيّة — فـDisallow: /admin يمنع /administrator-guide/ كذلك، وهذا يوقع الناس في الاتّجاه المعاكس.

الأسبقيّة بـطول النمط، لا بالموضع. فتفوز أطول قاعدة مطابقة حيثما كُتبت، والتعادل يذهب إلى Allow. ذلك ما يجعل Allow: /public/reports/ ينتشل فرعًا من Disallow: /public/ حتى لو كُتب Allow أوّلًا، أو آخرًا، أو بين سطرين لا علاقة لهما.

أمران لا يفعلهما robots.txt

لا يزيل صفحةً من البحث. فالمنع يوقف الجلب لا الإدراج. جوجل تستطيع أن تدرج رابطًا قيل لها ألّا تزحف إليه وتفعل، بلا مقتطف تحته، بقوّة الروابط المشيرة إليه. لإبقاء صفحة خارج الفهرس، اسمح بزحفها وأعطها وسم noindex — والتعليمتان يستبعد بعضهما بعضًا، والمنع يفوز بمنعه الوسم من أن يُقرأ أصلًا.

ولا يخفي شيئًا. فالملفّ عامّ وكثيرًا ما يكون أوّل ما يقرؤه مهاجم. إدراج /internal-admin/ فيه إعلان عنه. استعمل الاستيثاق لكل ما يهمّ.

فحصه كما ينبغي

افحص بسلسلة الاستعلام لا بدونها. فتلك هي الهيئة التي يطلبها الزاحفون فعلًا والهيئة التي تفوتها القاعدة المرساة. افحص الاتّجاهين: ما يجب منعه، وما يجب أن يبقى متاحًا — /_next/ و/assets/ وads.txt وخريطة الموقع.

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

أسئلة

ماذا تفعل $ في ملف robots.txt؟

ترسو بالنمط عند نهاية الرابط. فـDisallow: /*.pdf$ تطابق /a.pdf ولا تطابق /a.pdf?v=2، لأن الثاني لا ينتهي بـ.pdf. هي أشيع مصدر للقواعد التي لا تطابق شيئًا في صمت.

أي قاعدة تفوز حين تطابق اثنتان الرابط نفسه؟

النمط الأطول، حيثما وقع في الملفّ. إن تساوى طول النمطين فاز Allow. لترتيب الملفّ لا أثر إطلاقًا، وهذا يفاجئ من يتوقّعه يُقرأ من الأعلى إلى الأسفل.

هل يُبقي Disallow صفحةً خارج جوجل؟

لا. إنه يوقف الجلب لا الإدراج. فالرابط الممنوع قد يظهر في النتائج بلا وصف تحته، لأن جوجل رأته مرتبطًا من مكان آخر وقيل لها ألّا تنظر. استعمل وسم noindex واسمح بالزحف بدلًا من ذلك.

كيف أعرف أن قاعدة robots.txt تعمل؟

افحص روابط حقيقية عليها، بسلاسل استعلامها. فالقاعدة لا تُقرأ للتحقّق من صحّتها — والتي لا تطابق شيئًا لا تتميّز عن التي لا شيء لها لتطابقه — فالجواب الوحيد أن تقيّمها كما يقيّمها الزاحف.

هل أمنع ‎/assets/‎ أو ‎/static/‎؟

لا. فمنع CSS وجافاسكربت التي تعرض جوجل بها يجعلها ترى صفحةً مكسورة، والضرر يظهر نتائج ضعيفة بلا سبب مرئي في HTML. مهما منعت، تحقّق من بقاء موارد العرض متاحة.

أدوات من هذا الدليل

المزيد من أدوات SEO — كلّها تعمل في متصفّحك، ولا واحدة منها ترفع ملفًّا.