ما هو ملف robots.txt و طريقة إضافته لمشروع Nextjs


نستطيع أن نقول بأن ملف robots.txt
بأنه المسئول عن إخبار برامج التتبع crawlers
"أو كما يُطلق عليها برامج الزحف" التابعة لمحركات البحث عن الصفحات التي يمكن طلبها و فهرستها، و في الغالب يُستخدم لتجنّب تحميل عبء زائد على الموقع الإلكتروني من خلال طلبات الزحف، و لا يمكن إعتبارها آلية لإخفاء صفحات ويب من محركات البحث.
قواعد أساسية لـ robots.txt
في البداية يجب أن يكون ملف robots.txt
موجود في الجذر الرئيسي للموقع، بمعنى الوصول إليه من خلال كتابة رابط موقعك ثم اسم الملف، مثال على ذلك :
www.example.com/robots.txt
User-Agent
يمكن من خلال User-Agent
تحديد بوت محدد التي تُطبّق عليه قاعدة Disallow أو Allow، و يمكن كذلك تحديد كافة البرامج الزحف من خلال علامة نجمة *
، و يصبح السطر كالتالي :
User-Agent : *
Allow
يمكن من خلال قاعدة Allow
تحديد مسار أو صفحة يمكن لبرامج الزحف الوصول إليها، و بشكل إفتراضي و في الغالب يتم السماح لتلك البرامج من الوصول لكافة الموقع و استخدام قاعدة Disallow
لمنع بعض الصفحات أو المسارات من الوصول إليها، و القاعدة الإفتراضية لـ Allow
هي :
User-Agent : *
Allow : /
Disallow
من خلال قاعدة Disallow
نستطيع تحديد المسار أو الصفحة التي نرغب بمنع برامج الزحف من الوصول إليها، و بل يمكن كذلك تحديد نوع من الملفات التي لا نرغب بوصولهم إليها، في البداية سأضع مثال على تحديد صفحة :
User-Agent : *
Disallow : /privacy.html
مثال على تحديد مجلد كامل :
User-Agent : *
Disallow : /assets/images/
مثال على تحديد نوع محدد من الملفات :
User-Agent : *
Disallow : /*.mp4$
Sitemap ( إختياري )
كذلك يمكن تحديد رابط الخريطة من خلال :
Sitemap : https://www.example.com/sitemap.xml
يمكنك وضع أكثر من قاعدة
يمكنك وضع أكثر من قاعدة و ليس فقط قاعدة لـ Allow
و قاعدة لـ Disallow
، و هنا سأضع مثال على دمج أكثر من قاعدة :
User-Agent : *
Allow : /
Disallow : /privacy.html
Disallow : /assets/
Disallow : /*.mp4$
Disallow : /*.gif$
إعداد ملف ثابت لـ robots.txt في Nextjs
في البداية ننشئ ملف robots.txt
في مجلد app
ليصبح كالتالي :
/app/robots.txt
ثم نضيف القواعد فيه و هنا مثال للقواعد :
User-Agent: *
Allow: /
Disallow: /privacy
Sitemap: https://example.com/sitemap.xml
و بذلك يصبح لدينا ملف robots.txt
جاهز و يمكن الوصول إليه من خلال الرابط، مثال على الرابط :
https://example.com/robots.txt
إنشاء ملف robots.txt
ديناميكيًا من خلال Nextjs
من أجل إنشاء ملف robots.txt
ديناميكيًا، في البداية ننشئ ملف robots.tsx
في مجلد app
ليصبح كالتالي :
/app/robots.tsx
ثم نضيف الكود التالي :
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: '/privacy',
},
sitemap: 'https://example.com/sitemap.xml',
}
}
كما نلاحظ فإن مفاتيح الكائن هي نفسها مفاتيح الموجودة في ملف robots.txt
السابق الذي أعددناه، و يجدر أن ننوه بأن هذه المفاتيح userAgent
- allow
- disallow
يمكن أن تستقبل مصفوفة و ليس فقط نص string
و هنا مثال على تمرير مصفوفة لـ disallow
:
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/privacy', '/*.mp4$'],
},
sitemap: 'https://example.com/sitemap.xml',
}
}
و بالطبع سينتج لنا ملف robots.txt
و يمكن التأكد من ذلك من خلال فتح رابط موقعك مع إضافة اسم الملف :
www.domainname.com/robots.txt
و ستجد القواعد التي وضعتها بنفسك، يجدر الإشارة لـ نوع البيانات لكائن robots
:
type Robots = {
rules:
| {
userAgent?: string | string[]
allow?: string | string[]
disallow?: string | string[]
crawlDelay?: number
}
| Array<{
userAgent: string | string[]
allow?: string | string[]
disallow?: string | string[]
crawlDelay?: number
}>
sitemap?: string | string[]
host?: string
}
الختام
في هذه التدوينة وضعت القواعد الأساسية و نبذة الرئيسية من ملف robots.txt
، و قد أرفقت في نهاية التدوينة المصادر التي أعتمدت عليها في كتابة تدوينتي هذه.
المصادر و المراجع
مقدّمة ودليل عن ملف robots.txt | Google for Developers
إنشاء ملف robots.txt | Google for Developers
Metadata Files: robots.txt | Nextjs
What is a robots.txt File? - Crawling and Indexing | Learn Next.js