امروز میخوای یاد بگیری چطور یکی از مهمترین فایلها برای سئوی یک سایت رو بسازی:
(فایل robots.txt)
دقیقتر بگم، بهت نشون میدم چطور از پروتکلهای exclusion رباتی استفاده کنی تا رباتها رو از دسترسی به صفحات خاصی بلاک کنی، فرکانس خزیدن (crawl) رو بالا ببری، بودجه خزش (crawl budget) رو بهینه کنی و در نهایت صفحات درستتری رو تو نتایج جستجو (SERP) رتبه بدی.
توی این مقاله قراره این موارد رو باهم مرور کنیم:
- robots.txt چیه
- چرا robots.txt مهمه
- robots.txt چطور کار میکنه
- یوزر ایجنتها و دایرکتیوهای robots.txt
- تفاوت robots.txt با meta robots
- چطور robots.txt سایتت رو پیدا کنی
- چطور فایل robots.txt بسازی
- بهترین روشها (best practices) برای robots.txt
- چند نمونه واقعی از robots.txt
- چطور robots.txt رو از نظر خطا بررسی کنی
- و خیلی چیزای دیگه. بریم که شروع کنیم.
- سایتت چه امتیازی میگیره؟ یه آدیت رایگان و آنی بگیر که بزرگترین مشکلات سئوی سایتت رو نشونت بده و بگه چطور درستشون کنی.
خلاصه مقاله
یه فایل robots.txt به موتورهای جستجو میگه کدوم بخشهای سایتت رو باید بخزن و کدومها رو نه.
اگه این فایل رو نداشته باشی، خزندهها (crawler ها) به صورت پیشفرض کل سایتت رو میخزن.
این فایل برای بلاک کردن صفحات خصوصی یا استیجینگ و همچنین بهینهسازی crawl budget که رباتها روی مهمترین صفحات تمرکز کنن خیلی به کار میاد.
دایرکتیوهایی مثل User-Agent، Disallow، Allow و Sitemap رفتار خزش رو برای رباتهای مختلف (مثل Googlebot و Bingbot) مشخص میکنن.
robots.txt در سطح کل سایت عمل میکنه، در حالی که تگهای meta robots و x-robots خزش و ایندکس شدن رو در سطح تکتک صفحات کنترل میکنن.
بهترین روشها شامل قرار دادن فایل توی روت سایت، استفاده از خطهای دایرکتیو تمیز و بهکارگیری wildcard برای الگوهای گستردهتره.
فایل robots.txt چیست؟
به زبون ساده، فایل robots.txt یه جور دفترچه راهنماست برای رباتهای وب.
این فایل به همه نوع ربات میگه کدوم بخشهای یه سایت رو باید بخزن و کدومها رو نباید.
در واقع robots.txt بیشتر مثل یه «کد رفتاری» عمل میکنه که فعالیت رباتهای موتور جستجو (همون web crawler ها) رو کنترل میکنه.
فایل robots.txt به صورت مرتب توسط همه موتورهای جستجوی بزرگ (از جمله گوگل، بینگ و یاهو) چک میشه تا دستورالعملهایی درباره نحوه خزیدن سایت پیدا کنن. به این دستورالعملها میگن دایرکتیو (directive).
اگه هیچ دایرکتیوی نباشه یا اصلاً فایل robots.txt وجود نداشته باشه، موتورهای جستجو کل سایت رو میخزن، حتی صفحات خصوصی رو هم.
با اینکه بیشتر موتورهای جستجو مطیع هستن، باید بدونی که پیروی از دستورات robots.txt اختیاریه. موتورهای جستجو میتونن اگه بخوان فایل robots.txt رو نادیده بگیرن.
خوشبختانه گوگل جزو اون دسته نیست. گوگل معمولاً از دستورات داخل robots.txt پیروی میکنه.
چرا robots.txt مهمه؟
داشتن یه فایل robots.txt برای خیلی از سایتها، مخصوصاً سایتهای خیلی کوچیک، حیاتی نیست.
چون گوگل معمولاً میتونه همه صفحات مهم یه سایت رو پیدا کنه و ایندکس کنه.
و به صورت خودکار محتوای تکراری یا صفحات بیاهمیت رو ایندکس نمیکنه.
اما با این حال، دلیلی برای نداشتن فایل robots.txt وجود نداره، پس پیشنهاد میکنم حتماً یکی داشته باشی.
فایل robots.txt کنترل بیشتری بهت میده روی اینکه موتورهای جستجو چی رو بتونن بخزن و چی رو نه، و این به چند دلیل مفیده:
اجازه بلاک کردن صفحات غیرعمومی از موتورهای جستجو
بعضی وقتها صفحاتی توی سایتت داری که نمیخوای ایندکس بشن.
برای مثال شاید داری یه سایت جدید رو توی محیط استیجینگ توسعه میدی و میخوای مطمئن بشی تا قبل از لانچ از دید کاربرا مخفی میمونه.
یا شاید صفحات لاگین سایتت رو داری که نمیخوای توی نتایج جستجو نشون داده بشن.
توی این موارد میتونی از robots.txt استفاده کنی تا این صفحات رو از دید خزندههای موتور جستجو مخفی کنی.
کنترل بودجه خزش موتور جستجو (Crawl Budget)
اگه برات سخته که همه صفحات سایتت ایندکس بشن، شاید مشکل crawl budget داری.
به زبون ساده، موتورهای جستجو دارن وقتی که برای خزیدن محتوای سایتت اختصاص دادن رو صرف صفحات بیارزش سایتت میکنن.
با بلاک کردن URL های کمفایده با robots.txt، رباتهای موتور جستجو میتونن بیشتر بودجه خزششون رو صرف مهمترین صفحات کنن.
جلوگیری از ایندکس شدن منابع (Resources)
بهترین روش برای جلوگیری از ایندکس شدن یه صفحه خاص، استفاده از دایرکتیو متای «no-index» هست.
مشکل اینجاست که دایرکتیوهای متا برای فایلهای چندرسانهای مثل PDF و Word خوب کار نمیکنن.
اینجاست که robots.txt به کارت میاد.
میتونی یه خط ساده به فایل robots.txt اضافه کنی و موتورهای جستجو از دسترسی به این فایلهای چندرسانهای بلاک بشن.
(بعداً دقیقاً بهت نشون میدم چطور این کارو انجام بدی)
فایل robots.txt دقیقاً چطور کار میکنه؟
همونطور که گفتم، فایل robots.txt مثل یه دفترچه راهنما برای رباتهای موتور جستجو عمل میکنه. به رباتهای جستجوگر میگه کجا رو بخزن و کجا رو نخزن.
به همین دلیله که یه خزنده جستجو به محض رسیدن به یه سایت، دنبال فایل robots.txt میگرده.
اگه robots.txt رو پیدا کنه، قبل از ادامه دادن خزیدن سایت، اول اونو میخونه.
اگه خزنده وب فایل robots.txt رو پیدا نکنه یا فایل شامل دایرکتیوهایی که فعالیت رباتهای جستجو رو محدود میکنه نباشه، خزنده به خزیدن کل سایت مثل همیشه ادامه میده.
برای اینکه یه فایل robots.txt توسط رباتهای جستجو قابل پیدا شدن و خوندن باشه، باید به شکل خاصی فرمت بشه.
اول اینکه یه فایل متنیه بدون هیچ کد HTML (به همین خاطره که پسوندش txt هست).
دوم اینکه توی پوشه روت سایت قرار میگیره، مثلاً https://seosherpa.com/robots.txt.
سوم اینکه از یه سینتکس استاندارد استفاده میکنه که بین همه فایلهای robots.txt مشترکه، مثل این:
Sitemap: [آدرس سایتمپ]
User-agent: [شناسه ربات]
[دایرکتیو ۱]
[دایرکتیو ۲]
[دایرکتیو ...]
User-agent: [شناسه ربات دیگه]
[دایرکتیو ۱]
[دایرکتیو ۲]
[دایرکتیو ...]
این سینتکس شاید در نگاه اول یهکم پیچیده به نظر برسه، اما در واقع خیلی سادهست.
خلاصه اینکه، اول ربات (یوزر ایجنت) مورد نظرت رو مشخص میکنی و بعد قوانین (دایرکتیوها) رو مینویسی که اون ربات باید ازشون پیروی کنه.
بیا این دو تا رو بیشتر بررسی کنیم.
یوزر ایجنتها (User-Agents)
یوزر ایجنت یه اسمیه که برای تعریف خزندههای وب خاص و برنامههای فعال دیگه توی اینترنت استفاده میشه.
صدها یوزر ایجنت مختلف وجود داره، از جمله ایجنتهایی برای انواع دستگاهها و مرورگرها.
بیشترشون توی زمینه فایل robots.txt و سئو بیربطن. اما اینا رو باید بشناسی:
گوگل: Googlebot تصاویر گوگل: Googlebot-Image ویدیوی گوگل: Googlebot-Video اخبار گوگل: Googlebot-News بینگ: Bingbot تصاویر و ویدیوهای بینگ: MSNBot-Media یاهو: Slurp یاندکس: YandexBot بایدو: Baiduspider داکداکگو: DuckDuckBot
با مشخص کردن یوزر ایجنت میتونی برای موتورهای جستجوی مختلف قوانین متفاوتی بذاری.
مثلاً اگه بخوای یه صفحه خاص توی نتایج گوگل نشون داده بشه ولی توی جستجوهای بایدو نه، میتونی دو مجموعه دستور توی فایل robots.txt بذاری: یکی با «User-agent: Bingbot» و یکی با «User-agent: Baiduspider».
همچنین میتونی از علامت ستاره (*) به عنوان wildcard استفاده کنی اگه بخوای دایرکتیوهات برای همه یوزر ایجنتها اعمال بشه.
مثلاً فرض کن میخوای همه رباتهای موتور جستجو رو از خزیدن سایتت بلاک کنی به جز داکداکگو. اینطوری انجامش میدی:
User-agent: *
Disallow: /
User-agent: DuckDuckBot
Allow: /
نکته جانبی: اگه توی فایل robots.txt دستورات متناقض وجود داشته باشه، ربات از دستور دقیقتر پیروی میکنه.
به همین دلیله که توی مثال بالا، DuckDuckBot میدونه سایت رو بخزه، با اینکه دستور قبلی (که برای همه رباتها بود) گفته بود نخزه. خلاصه اینکه یه ربات از دستوری پیروی میکنه که دقیقاً به خودش مربوط باشه.
دایرکتیوها (Directives)
دایرکتیوها همون کد رفتاری هستن که میخوای یوزر ایجنت ازشون پیروی کنه. به بیان دیگه، دایرکتیوها مشخص میکنن ربات جستجو چطور باید سایتت رو بخزه.
اینا دایرکتیوهاییه که Googlebot الان پشتیبانی میکنه، همراه با کاربردشون توی فایل robots.txt:
Disallow
از این دایرکتیو استفاده کن تا رباتهای جستجو رو از خزیدن فایلها و صفحات خاص توی یه مسیر URL مشخص منع کنی.
مثلاً اگه بخوای Googlebot رو از دسترسی به ویکی سایتت و همه صفحاتش بلاک کنی، robots.txt باید این دایرکتیو رو داشته باشه:
User-agent: GoogleBot
Disallow: /wiki
میتونی از دایرکتیو disallow برای بلاک کردن یه URL دقیق، همه فایلها و صفحات توی یه دایرکتوری خاص یا حتی کل سایتت استفاده کنی.
Allow
دایرکتیو allow مفیده اگه بخوای به موتورهای جستجو اجازه بدی یه زیرمسیر یا صفحه خاص رو بخزن، توی بخشی که در کل بلاک شده.
فرض کن میخوای همه موتورهای جستجو رو از خزیدن پستهای بلاگت منع کنی، به جز یکی؛ اونوقت از دایرکتیو allow اینطوری استفاده میکنی:
User-agent: *
Disallow: /blog
Allow: /blog/allowable-post
از اونجایی که رباتهای جستجو همیشه از دقیقترین دستور توی فایل robots.txt پیروی میکنن، میدونن که باید /blog/allowable-post رو بخزن، اما پستها یا فایلهای دیگه توی اون دایرکتوری رو نمیخزن، مثل:
/blog/post-one/ /blog/post-two/ /blog/file-name.pdf
هم گوگل و هم بینگ از این دایرکتیو پشتیبانی میکنن. اما بقیه موتورهای جستجو نه.
Sitemap
دایرکتیو sitemap برای مشخص کردن آدرس سایتمپ(های) XML به موتورهای جستجو استفاده میشه.
اگه با سایتمپها آشنا نیستی، اونا برای لیست کردن صفحاتی که میخوای خزیده و ایندکس بشن استفاده میشن.
با اضافه کردن دایرکتیو sitemap توی robots.txt، به موتورهای جستجو کمک میکنی سایتمپت رو پیدا کنن و در نتیجه مهمترین صفحات سایتت رو بخزن و ایندکس کنن.
با این حال، اگه از قبل سایتمپ XML رو از طریق سرچ کنسول ثبت کرده باشی، اضافه کردن سایتمپ توی robots.txt برای گوگل یهجورایی تکراریه. با این حال، بهترین روش اینه که از دایرکتیو sitemap استفاده کنی چون به موتورهای جستجو مثل اسک، بینگ و یاهو میگه سایتمپت رو کجا پیدا کنن.
اینم یه مثال از فایل robots.txt که از دایرکتیو sitemap استفاده کرده:
Sitemap: https://www.website.com/sitemap.xml
User-agent: *
Disallow: /wiki/
Allow: /wike/article-title/
به جای قرارگیری دایرکتیو sitemap توجه کن. بهتره در بالای فایل robots.txt قرار بگیره. البته میشه پایین هم گذاشتش.
اگه چند تا سایتمپ داری، باید همهشون رو توی فایل robots.txt بذاری. اینطوری میشه اگه برای صفحات و پستها سایتمپهای جدا داشته باشیم:
Sitemap: http://website.com/post-sitemap.xml
Sitemap: http://website.com/page-sitemap.xml
User-agent: *
Disallow: /wiki/
Allow: /wike/article-title/
در هر صورت فقط لازمه هر سایتمپ XML رو یه بار ذکر کنی چون همه یوزر ایجنتهای پشتیبانیشده از این دایرکتیو پیروی میکنن.
نکته اینه که برخلاف بقیه دایرکتیوهای robots.txt که مسیرها رو لیست میکنن، دایرکتیو sitemap باید آدرس کامل (absolute URL) سایتمپت رو بگه، شامل پروتکل، دامنه و پسوند دامنه سطح بالا.
کامنتها
دایرکتیو «کامنت» برای انسانها مفیده اما رباتهای جستجو ازش استفاده نمیکنن.
میتونی کامنت به robots.txt اضافه کنی تا خودت یادت بیاد چرا یه دایرکتیو خاص وجود داره، یا جلوی کسایی که به robots.txt دسترسی دارن رو بگیری که دایرکتیوهای مهم رو پاک نکنن. خلاصه اینکه کامنتها برای اضافه کردن یادداشت به فایل robots.txt به کار میرن.
برای اضافه کردن کامنت، کافیه بنویسی “#” و بعدش متن کامنتت رو.
# اجازه دسترسی به دایرکتوری /wp-admin/ رو به هیچ رباتی نده.
User-agent: *
Disallow: /wp-admin/
میتونی کامنتت رو در ابتدای خط بنویسی (مثل بالا) یا بعد از یه دایرکتیو توی همون خط (مثل زیر):
User-agent: * #برای همه رباتها اعمال میشه
Disallow: /wp-admin/ # اجازه دسترسی به دایرکتوری /wp-admin/ رو نده.
هرجا که کامنتت رو بنویسی، هر چیزی که بعد از هشتگ بیاد نادیده گرفته میشه.
تا اینجا همراهم بودی؟
عالیه! تا الان مهمترین دایرکتیوهایی که برای robots.txt نیاز داری رو پوشش دادیم، این دایرکتیوها ضمناً تنها دایرکتیوهایی هستن که گوگل پشتیبانی میکنه.
اما بقیه موتورهای جستجو چی؟ در مورد بینگ، یاهو و یاندکس یه دایرکتیو دیگه هم هست که میتونی استفاده کنی:
Crawl Delay
دایرکتیو Crawl-delay یه دایرکتیو غیررسمیه که برای جلوگیری از overload شدن سرورها با درخواستهای زیاد خزش استفاده میشه.
به بیان دیگه، ازش استفاده میکنی تا فرکانسی که یه موتور جستجو میتونه سایتت رو بخزه محدود کنی.
نکته اینه که اگه موتورهای جستجو بتونن سرورت رو با خزیدن مکرر سایتت overload کنن، اضافه کردن دایرکتیو Crawl-delay به فایل robots.txt فقط یه راهحل موقتیه.
شاید مشکل واقعیت هاستینگ افتضاح یا محیط هاستینگ بد پیکربندیشده باشه، که باید سریع درستش کنی.
دایرکتیو crawl delay با تعریف زمان به ثانیه بین هر بار خزیدن سایتت توسط یه ربات جستجو کار میکنه.
مثلاً اگه crawl delay رو روی ۵ بذاری، رباتهای جستجو روز رو به بازههای پنجثانیهای تقسیم میکنن و توی هر بازه فقط یه صفحه (یا هیچی) میخزن، که در مجموع حدود ۱۷,۲۸۰ URL توی روز میشه.
با این حساب، وقتی این دایرکتیو رو تنظیم میکنی مراقب باش، مخصوصاً اگه سایت بزرگی داری. فقط ۱۷,۲۸۰ URL خزیدهشده در روز اگه سایتت میلیونها صفحه داشته باشه خیلی کمکی نمیکنه.
نحوه برخورد هر موتور جستجو با دایرکتیو crawl-delay فرق میکنه. بیا بررسیش کنیم:
Crawl-delay و بینگ، یاهو و یاندکس
بینگ، یاهو و یاندکس همگی از دایرکتیو crawl-delay توی robots.txt پشتیبانی میکنن.
یعنی میتونی یه crawl-delay برای یوزر ایجنتهای BingBot، Slurp و YandexBot تنظیم کنی و اون موتور جستجو خزش خودش رو بر اساس اون کند میکنه.
توجه کن که هر موتور جستجو crawl-delay رو یهکم متفاوت تفسیر میکنه، پس بهتره مستنداتشون رو چک کنی:
بینگ و یاهو یاندکس
با این حال، فرمت دایرکتیو crawl-delay برای هر کدوم از این موتورها یکسانه. باید بلافاصله بعد از یه دایرکتیو disallow یا allow قرارش بدی. اینم یه مثال:
User-agent: BingBot
Allow: /widgets/
Crawl-delay: 5
Crawl-delay و گوگل
خزنده گوگل از دایرکتیو crawl-delay پشتیبانی نمیکنه، پس تنظیم crawl-delay برای Googlebot توی robots.txt هیچ فایدهای نداره.
با این حال، گوگل تعریف نرخ خزش (crawl rate) رو توی گوگل سرچ کنسول پشتیبانی میکنه. اینطوری انجامش بده:
برو به صفحه تنظیمات گوگل سرچ کنسول. پراپرتیای رو که میخوای نرخ خزش براش تعریف کنی انتخاب کن روی «Limit Google’s maximum crawl rate» کلیک کن. اسلایدر رو روی نرخ خزش دلخواهت تنظیم کن. بهصورت پیشفرض، نرخ خزش روی تنظیمات «Let Google optimize for my site (recommended)» هست.
Crawl-delay و بایدو
مثل گوگل، بایدو هم از دایرکتیو crawl delay پشتیبانی نمیکنه. با این حال، میتونی یه حساب Baidu Webmaster Tools بسازی که توش میتونی فرکانس خزش رو کنترل کنی، شبیه گوگل سرچ کنسول.
خلاصه بگم؟ robots.txt به عنکبوتهای موتور جستجو میگه صفحات خاصی رو توی سایتت نخزن.
مقایسه robots.txt و meta robots و x-robots
خیلی دستورالعمل «robots» مختلف وجود داره. فرقشون چیه، یا اصلاً یکی هستن؟
بذار یه توضیح کوتاه بدم:
اول اینکه، robots.txt یه فایل متنی واقعیه، در حالی که meta و x-robots تگهایی هستن داخل کد یه صفحه وب.
دوم اینکه، robots.txt به رباتها پیشنهاد میده چطور صفحات یه سایت رو بخزن. از طرف دیگه، دایرکتیوهای متای robots دستورات خیلی قطعیتری برای خزیدن و ایندکس شدن محتوای یه صفحه میدن.
فراتر از اینکه چی هستن، این سه تا کارکردهای متفاوتی دارن.
robots.txt رفتار خزش رو در سطح سایت یا دایرکتوری تعیین میکنه، در حالی که meta و x-robots میتونن رفتار ایندکس شدن رو در سطح تکتک صفحات (یا حتی عنصرهای یه صفحه) تعیین کنن.
به طور کلی:
اگه میخوای جلوی ایندکس شدن یه صفحه رو بگیری، باید از تگ متای «no-index» استفاده کنی. بلاک کردن یه صفحه توی robots.txt تضمین نمیکنه که توی موتورهای جستجو نشون داده نشه (دستورات robots.txt در نهایت فقط پیشنهادن). ضمناً، یه ربات موتور جستجو ممکنه بازم اون URL رو پیدا کنه و ایندکسش کنه اگه از یه سایت دیگه بهش لینک داده شده باشه.
برعکس، اگه میخوای جلوی ایندکس شدن یه فایل چندرسانهای رو بگیری، robots.txt بهترین راهه. نمیتونی به فایلهایی مثل jpeg یا PDF تگ متا robots اضافه کنی.
چطور robots.txt سایتت رو پیدا کنی؟
اگه از قبل فایل robots.txt توی سایتت داری، میتونی به آدرس yourdomain.com/robots.txt بهش دسترسی داشته باشی.
توی مرورگرت به این آدرس برو.
اگه یه صفحه متنی مثل نمونه دیدی، پس فایل robots.txt داری.
چطور یه فایل robots.txt بسازی؟
اگه از قبل فایل robots.txt نداری، ساختنش خیلی سادس.
اول، نوتپد، مایکروسافت ورد یا هر ادیتور متنی رو باز کن و فایل رو با اسم “robots” ذخیره کن.
حتماً از حروف کوچیک استفاده کن و پسوند .txt رو به عنوان نوع فایل انتخاب کن:
دوم، دایرکتیوهات رو اضافه کن. مثلاً اگه بخوای همه رباتهای جستجو رو از خزیدن دایرکتوری /login/ منع کنی، اینطوری تایپ میکنی:
به اضافه کردن دایرکتیوها ادامه بده تا وقتی که از فایل robots.txt خودت راضی بشی.
یا اینکه میتونی با یه ابزار مثل این یکی از Ryte، robots.txt خودت رو بسازی.
یه مزیت استفاده از ابزار اینه که خطای انسانی رو به حداقل میرسونه.
اما عیبش اینه که فضای شخصیسازی توی این ابزارها خیلی محدوده.
به همین خاطر پیشنهاد میکنم خودت یاد بگیری چطور فایل robots.txt رو بنویسی. اینطوری میتونی دقیقاً مطابق نیازهای خودت یه robots.txt بسازی.
فایل robots.txt رو کجا بذاری؟
فایل robots.txt رو توی دایرکتوری سطح بالای سابدامینی که مربوط بهشه قرار بده.
مثلاً برای کنترل رفتار خزش روی yourdomain.com، فایل robots.txt باید توی مسیر yourdomain.com/robots.txt قابل دسترس باشه.
از طرف دیگه، اگه بخوای خزش روی یه سابدامین مثل shop.yourdomain.com رو کنترل کنی، robots.txt باید توی مسیر shop.yourdomain.com/robots.txt قابل دسترس باشه.
قوانین طلایی اینا هستن:
هر سابدامین توی سایتت باید فایل robots.txt خودش رو داشته باشه. فایل(ها) رو با اسم robots.txt و همش با حروف کوچیک بذار. فایل رو توی دایرکتوری روت همون سابدامینی که مربوطه قرار بده.
اگه فایل robots.txt توی دایرکتوری روت پیدا نشه، موتورهای جستجو فرض میکنن هیچ دایرکتیوی وجود نداره و کل سایتت رو میخزن.
بهترین روشها برای ساخت فایل robots.txt
حالا بریم سراغ قوانین فایلهای robots.txt. از این بهترین روشها استفاده کن تا از مشکلات رایج robots.txt دور بمونی:
برای هر دایرکتیو یه خط جدید استفاده کن
هر دایرکتیو توی robots.txt باید توی یه خط جدید باشه.
اگه اینطوری نباشه، موتورهای جستجو گیج میشن که چی رو باید بخزن (و ایندکس کنن).
مثلاً این نمونه اشتباه پیکربندی شده:
User-agent: * Disallow: /folder/ Disallow: /another-folder/
اما این یکی درسته:
User-agent: *
Disallow: /folder/
Disallow: /another-folder/
دقت (Specificity) تقریباً همیشه برندهست
وقتی صحبت از گوگل و بینگ باشه، دستور دقیقتر همیشه برندهست.
مثلاً توی این نمونه، دایرکتیو Allow چون طولانیتره روی دایرکتیو Disallow برتری داره:
User-agent: *
Disallow: /about/
Allow: /about/company/
گوگل و بینگ میدونن که باید /about/company/ رو بخزن اما بقیه صفحات توی دایرکتوری /about/ رو نه.
اما در مورد بقیه موتورهای جستجو، برعکسه.
به صورت پیشفرض، برای همه موتورهای جستجوی بزرگ به جز گوگل و بینگ، اولین دستوری که مچ میشه برندهست.
توی مثال بالا، بقیه موتورهای جستجو از دایرکتیو Disallow پیروی میکنن و Allow رو نادیده میگیرن، یعنی صفحه /about/company خزیده نمیشه.
این نکته رو موقع نوشتن قوانین برای همه موتورهای جستجو یادت باشه.
فقط یک گروه دایرکتیو برای هر یوزر ایجنت
اگه robots.txt چند گروه دایرکتیو برای یه یوزر ایجنت داشته باشه، خب دیگه چقدر میتونه گیجکننده بشه؟
برای رباتها لزوماً نه، چون همه قوانین اون اعلانهای مختلف رو ترکیب میکنن توی یه گروه و همهشون رو دنبال میکنن، اما برای خودت گیجکنندس.
برای جلوگیری از خطای انسانی، یوزر ایجنت رو یه بار بنویس و بعد همه دایرکتیوهایی که به اون یوزر ایجنت مربوطه رو زیرش لیست کن.
با تمیز و ساده نگه داشتن اوضاع، احتمال اشتباه کردن کمتر میشه.
از wildcard (*) استفاده کن تا دستورات رو سادهتر کنی
توی مثال بالا wildcard ها (*) رو دیدی؟
درسته؛ میتونی از wildcard ها استفاده کنی تا قوانینت رو روی همه یوزر ایجنتها اعمال کنی و همچنین برای مچ کردن الگوهای URL موقع نوشتن دایرکتیوها.
مثلاً اگه بخوای جلوی دسترسی رباتهای جستجو به URL های پارامتری دستهبندی محصولات توی سایتت رو بگیری، میتونی هر دسته رو تکتک لیست کنی:
User-agent: *
Disallow: /products/watches?
Disallow: /products/handbags?
Disallow: /products/shoes?
یا میتونی از یه wildcard استفاده کنی که این قانون رو روی همه دستهها اعمال کنه. اینطوری میشه:
User-agent: *
Disallow: /products/*?
این نمونه، موتورهای جستجو رو از خزیدن همه URL های توی زیرپوشه /product/ که علامت سوال دارن بلاک میکنه. به عبارت دیگه هر URL دستهبندی محصول که پارامتری باشه.
گوگل، بینگ، یاهو و اسک از استفاده wildcard توی دایرکتیوهای robots.txt پشتیبانی میکنن.
از «$» برای مشخص کردن انتهای URL استفاده کن
برای نشون دادن انتهای یه URL، از علامت دلار ($) بعد از مسیر robots.txt استفاده کن.
فرض کن میخوای جلوی دسترسی رباتهای جستجو به همه فایلهای doc. توی سایتت رو بگیری؛ اونوقت از این دایرکتیو استفاده میکنی:
User-agent: *
Disallow: /*.doc$
این کار جلوی دسترسی موتورهای جستجو به هر URL ای که با .doc تموم میشه رو میگیره.
یعنی /media/file.doc رو نمیخزن، اما /media/file.doc?id=72491 رو میخزن چون اون URL با “.doc” تموم نمیشه.
هر سابدامین باید robots.txt خودش رو داشته باشه
دایرکتیوهای robots.txt فقط برای همون (ساب)دامینی که فایل robots.txt توش هاست شده اعمال میشن.
یعنی اگه سایتت چند سابدامین داشته باشه مثل:
domain.com tickets.domain.com events.domain.com
هر سابدامین به فایل robots.txt جداگونه خودش نیاز داره.
فایل robots.txt همیشه باید توی دایرکتوری روت هر سابدامین اضافه بشه. با استفاده از مثال بالا، مسیرها اینطوری میشن:
domain.com/robots.txt tickets.domain.com/robots.txt events.domain.com/robots.txt
توی robots.txt از noindex استفاده نکن
به زبون ساده، گوگل از دایرکتیو no-index توی robots.txt پشتیبانی نمیکنه.
با اینکه گوگل قبلاً ازش پیروی میکرد، از جولای ۲۰۱۹ به بعد گوگل کاملاً پشتیبانی ازش رو متوقف کرد.
و اگه فکر میکنی از دایرکتیو غیررسمی no-index توی robots.txt استفاده کنی تا محتوا رو توی موتورهای جستجوی دیگه no-index کنی، دوباره فکر کن:
دایرکتیو مستندنشده noindex هیچوقت برای بینگ کار نکرد، پس این تغییر رفتار بین دو موتور جستجو رو هماهنگ میکنه. تگ متای NOINDEX یا هدر HTTP، و کدهای بازگشتی 404/410 همگی راههای خوبی برای حذف محتوات از بینگ هستن.
دایرکتیو غیررسمی no-index هیچوقت توی بینگ کار نکرد.
بهترین روش برای no-index کردن محتوا توی موتورهای جستجو اینه که یه تگ متای no-index روی robots به صفحهای که میخوای مستثنی کنی اضافه کنی.
اندازه فایل robots.txt رو زیر ۵۱۲ کیلوبایت نگه دار
گوگل الان یه محدودیت اندازه فایل robots.txt به میزان ۵۰۰ کیبیبایت (۵۱۲ کیلوبایت) داره.
یعنی هر محتوایی که بعد از ۵۱۲ کیلوبایت باشه ممکنه نادیده گرفته بشه.
با این حال، از اونجایی که هر کاراکتر فقط یک بایت مصرف میکنه، robots.txt تو باید خیلی خیلی بزرگ باشه تا به این محدودیت اندازه برسه (دقیقاً ۵۱۲,۰۰۰ کاراکتر). فایل robots.txt رو سبک نگه دار و کمتر روی صفحات تکتک مستثنیشده تمرکز کن، بیشتر روی الگوهای گستردهتر که با wildcard میشه کنترلشون کرد.
مشخص نیست که آیا بقیه موتورهای جستجو هم محدودیت اندازه فایل robots.txt دارن یا نه.
نمونههای فایل robots.txt
در ادامه چند تا نمونه از فایلهای robots.txt رو میبینی.
اینا شامل ترکیبی از دایرکتیوهایی هستن که آژانس سئوی نویسنده مقاله بیشتر توی robots.txt مشتریهاش استفاده میکنه. یادت باشه اینا فقط برای الهام گرفتنه. همیشه باید فایل robots.txt رو مطابق نیازهای خودت شخصیسازی کنی.
دسترسی همه رباتها به همه چیز
این فایل robots.txt هیچ قانون disallow برای هیچ موتور جستجویی نداره:
User-agent: *
Disallow:
به عبارت دیگه، اجازه میده رباتهای جستجو همه چیز رو بخزن. همون کاری رو میکنه که یه فایل robots.txt خالی یا نداشتن اصلاً robots.txt انجام میده.
بلاک کردن همه رباتها از دسترسی به همه چیز
این نمونه فایل robots.txt به همه موتورهای جستجو میگه بعد از اسلش (/) به هیچی دسترسی نداشته باشن. یعنی کل دامنه:
User-agent: *
Disallow: /
خلاصه، این فایل robots.txt همه رباتهای موتور جستجو رو بلاک میکنه و ممکنه جلوی نشون داده شدن سایتت توی نتایج جستجو رو بگیره.
بلاک کردن همه رباتها از خزیدن یه فایل
توی این نمونه، همه رباتهای جستجو رو از خزیدن یه فایل خاص بلاک میکنیم.
User-agent: *
Disallow: /directory/this-is-a-file.pdf
بلاک کردن همه رباتها از خزیدن یه نوع فایل خاص (doc، pdf، jpg)
از اونجایی که برای no-index کردن فایلهایی مثل ‘doc’ یا ‘pdf’ نمیشه از تگ متا robots «no-index» استفاده کرد، میتونی از این دایرکتیو استفاده کنی تا جلوی ایندکس شدن یه نوع فایل خاص رو بگیری.
User-agent: *
Disallow: /*.doc$
Disallow: /*.pdf$
Disallow: /*.jpg$
این کار همه فایلهای اون نوع رو deindex میکنه، تا وقتی که هیچ فایل تکتکی از جای دیگهای توی وب بهش لینک نشده باشه.
بلاک کردن گوگل از خزیدن چند دایرکتوری
شاید بخوای خزیدن چند دایرکتوری رو برای یه ربات خاص یا همه رباتها بلاک کنی. توی این نمونه، Googlebot رو از خزیدن دو زیردایرکتوری بلاک میکنیم.
User-agent: Googlebot
Disallow: /admin/
Disallow: /private/
توجه کن، هیچ محدودیتی برای تعداد دایرکتوریهایی که میتونی بلاک کنی وجود نداره. فقط هر کدوم رو زیر یوزر ایجنتی که دایرکتیو مربوط بهشه لیست کن.
بلاک کردن گوگل از خزیدن همه URL های پارامتری
این دایرکتیو مخصوصاً برای سایتهایی که از ناوبری فست (faceted navigation) استفاده میکنن مفیده، جایی که URL های پارامتری زیادی ساخته میشه.
User-agent: Googlebot
Disallow: /*?
این دایرکتیو جلوی مصرف crawl budget روی URL های داینامیک رو میگیره و خزیدن صفحات مهم رو ماکسیمم میکنه. نویسنده مقاله ازش بطور مرتب استفاده میکنه، مخصوصاً روی سایتهای ایکامرسی که قابلیت جستجو دارن.
بلاک کردن همه رباتها از خزیدن یه زیردایرکتوری اما اجازه خزیدن یه صفحه توش
بعضی وقتها شاید بخوای جلوی دسترسی خزندهها به یه بخش کامل از سایتت رو بگیری، اما یه صفحه رو قابل دسترس بذاری. اگه اینطوره، از این ترکیب دایرکتیوهای ‘allow’ و ‘disallow’ استفاده کن:
User-agent: *
Disallow: /category/
Allow: /category/widget/
این به موتورهای جستجو میگه که کل دایرکتوری رو نخزن، به جز یه صفحه یا فایل خاص.
robots.txt برای وردپرس
این پیکربندی پایهای هست که نویسنده مقاله برای فایل robots.txt وردپرس پیشنهاد میکنه. جلوی خزیدن صفحات ادمین، تگها و URL های نویسندهها رو میگیره که ممکنه توی سایت وردپرسی، کثیفی غیرضروری ایجاد کنن.
User-Agent: *
Allow: /wp-content/uploads/
Disallow: /wp-content/plugins/
Disallow: /wp-admin/
Disallow: /readme.html
Disallow: /refer/
Disallow: /tag/
Disallow: /author/
Disallow: /404-error/
Sitemap: http://www.example.com/post-sitemap.xml
Sitemap: http://www.example.com/page-sitemap.xml
این فایل robots.txt برای بیشتر سایتهای وردپرسی خوب کار میکنه، اما البته همیشه باید طبق نیازهای خودت تنظیمش کنی.
خطاهای فایل robots.txt
نویسنده مقاله میگه توی این سالها بیشتر از هر جنبه دیگهای از سئوی تکنیکال، خطاهای رتبهکشِ توی فایلهای robots.txt دیده. با اینهمه دستور بالقوه متناقض، مشکلات میتونن پیش بیان و پیش هم میان.
پس وقتی بحث فایلهای robots.txt باشه، بهتره حواست به مشکلات باشه.
خوشبختانه، گزارش «Coverage» توی گوگل سرچ کنسول یه راه بهت میده تا مشکلات robots.txt رو چک و مانیتور کنی.
همچنین میتونی از ابزار خوب Robots.txt Testing Tool گوگل استفاده کنی تا خطاها رو توی فایل robots زندهات چک کنی یا یه robots.txt جدید رو قبل از دیپلوی کردنش تست کنی.
بریم رایجترین مشکلات رو مرور کنیم، یعنی چی هستن و چطور حلشون کنیم.
Submitted URL blocked by robots.txt
این خطا یعنی حداقل یکی از URL های توی سایتمپ(های) ثبتشدهات با robots.txt بلاک شده.
یه سایتمپ که درست تنظیم شده باشه فقط باید URL هایی رو که میخوای ایندکس بشن شامل بشه. پس نباید هیچ صفحه no-index، کنونیکالشده یا ریدایرکتشدهای توش باشه.
اگه این بهترین روشها رو رعایت کرده باشی، هیچ صفحهای که توی سایتمپت ثبت شده نباید با robots.txt بلاک بشه.
اگه توی گزارش Coverage «Submitted URL blocked by robots.txt» رو دیدی، باید بررسی کنی کدوم صفحات تحت تاثیر قرار گرفتن، بعد فایل robots.txt رو عوض کنی تا بلاک اون صفحه رو برداری.
میتونی از ابزار robots.txt تستر گوگل استفاده کنی تا ببینی کدوم دایرکتیو داره محتوا رو بلاک میکنه.
Blocked by Robots.txt
این «خطا» یعنی صفحاتی داری که با robots.txt بلاک شدن و الان توی ایندکس گوگل نیستن.
اگه این محتوا فایدهای داره و باید ایندکس بشه، بلاک خزش رو توی robots.txt بردار.
یه هشدار کوتاه:
«Blocked by robots.txt» لزوماً یه خطا نیست. در واقع، ممکنه دقیقاً همون نتیجهای باشه که میخوای.
مثلاً شاید فایلهای خاصی رو توی robots.txt بلاک کرده باشی به این قصد که از ایندکس گوگل مستثنی بشن. از طرف دیگه، اگه خزیدن بعضی صفحات رو با این نیت بلاک کرده باشی که no-index بشن، بهتره بلاک خزش رو برداری و به جاش از تگ متای robots استفاده کنی.
این تنها راهیه که میتونی مطمئن باشی محتوا از ایندکس گوگل مستثنی میشه.
Indexed, Though Blocked by Robots.txt
این خطا یعنی بعضی از محتوایی که با robots.txt بلاک شده هنوز توی گوگل ایندکس هست.
این اتفاق وقتی میافته که محتوا هنوز از جای دیگهای وب قابل کشف باشه توسط Googlebot چون بهش لینک داده شده. خلاصه، Googlebot به اون محتوا میرسه، میخزتش و ایندکسش میکنه قبل از اینکه به robots.txt سایتت سر بزنه، جایی که دستور disallow رو میبینه.
اون موقع دیگه دیر شده. و ایندکس میشه:
بذار این نکته رو محکم بگم:
اگه میخوای محتوایی رو از نتایج جستجوی گوگل حذف کنی، robots.txt راهحل درستی نیست.
توصیه میکنم بلاک خزش رو برداری و به جاش از تگ متا robots نوع no-index استفاده کنی تا جلوی ایندکس شدن رو بگیری.
برعکس، اگه این محتوا رو به اشتباه بلاک کرده بودی و میخوای توی ایندکس گوگل بمونه، بلاک خزش رو توی robots.txt بردار و همینو نگه دار.
این میتونه به بهبود دیدهشدن محتوا توی جستجوی گوگل کمک کنه.
حرف آخر
robots.txt میتونه برای بهتر شدن خزیدن و ایندکس شدن محتوای سایتت استفاده بشه، که کمکت میکنه دیدهشدن بیشتری توی نتایج جستجو داشته باشی.
وقتی درست ازش استفاده بشه، مهمترین متن توی سایتته. اما وقتی بیدقت ازش استفاده بشه، پاشنه آشیل کد سایتت میشه.
خبر خوب اینه که، فقط با یه درک پایه از یوزر ایجنتها و چند تا دایرکتیو، نتایج جستجوی بهتر تو دسترست هست.
تنها سوال اینه، کدوم پروتکلها رو توی فایل robots.txt خودت به کار میگیری؟