فایل robots.txt چیست و چه کاربردی دارد؟
همه ربات ها از دستورات فایل robots.txt پیروی نمی کنند!
نحوه تنظیم دستورات فایل robots.txt
چند مثال از کاربرد دستورات فایل robots.txt
استفاده از الگو (Pattern) در دستورات فایل robots.txt
ایجاد تاخیر در درخواست ها با دستور Crawl-delay
افزودن نقشه XML سایت به فایل robots.txt
سایر روش های مسدود سازی آدرس ها برای ربات های خزنده
نحوه استفاده از فایل robots.txt در سایت

از زمان شکل گیری ابزار ارتباطی نوین به نام اینترنت و مشارکت عموم در ایجاد و استفاده از محتوا در بستر شبکه جهانی وب قوانین و قواعدی نیز در جهت تولید و دسترسی اصولی به پایگاه های اینترنتی وضع شد که در بحث بهینه سازی سایت یا سئو (SEO مخفف Search Engine Optimization) عمدتا موتورهای جستجوگر معروفی چون گوگل (Google)، بینگ (Bing)، یاهو (Yahoo) و ابرشرکت ها دخیل بوده اند، بدین ترتیب با هم اندیشی توسعه دهنده گان و مهندسین حوزه وب به تدریج استانداردها و قواعدی برای تعامل مدیران سایت ها با موتورهای جستجو تدوین شد که یکی از این قواعد امکان کنترل رفتار ربات های خزنده (Crawler Bots) موتورهای جستجو به وسلیه ایجاد و تنظیم فایلی به نام robots.txt در ریشه سایت است، بدین وسیله می توان تا حدودی رفتار ربات ها را در نحوه جستجو و ایندکس صفحات وبسایت ها مدیریت کنیم که در ادامه به چگونگی انجام این کار و بایدها و نبایدهای استفاده از این امکان اشاره خواهیم کرد.
فایل robots.txt چیست و چه کاربردی دارد؟
طبق دستورالعمل پروتکل استثناء سازی ربات ها (REP مخفف Robots Exclusion Protocol) فایل robots.txt یک فایل متنی ساده است که می توان آن را با هر ویرایشگری ایجاد و با فرمت txt ذخیره نمود، این فایل در ریشه سایت قرار می گیرد (یعنی به طور مستقیم در فولدر www یا public_html و در بالاترین سطح) به طوری که اگر بعد از آدرس سایت عبارت robots.txt را تایپ کنیم این فایل در دسترس باشد، به طور مثال:
https://webgoo.ir/robots.txt
از فایل robots.txt عمدتا برای تعیین رفتار ربات های خزنده در تعامل با صفحات مختلف سایت (آدرس های URL) به دو صورت مجاز (Allow، حالت پیش فرض) و غیرمجاز (Disallow) استفاده می شود به فرض در مواردی ممکن است نخواهیم صفحاتی از سایتمان توسط ربات های خزنده موتورهای جستجو بررسی و ایندکس شود یا شاید قبلا این کار صورت گرفته و اکنون به هر دلیل می خواهیم این صفحات را از دیتابیس موتور جستجوی مورد نظرمان حذف کنیم، البته استفاده از فایل robots.txt برای حذف آدرس های ایندکس شده از نتایج موتورهای جستجو اولین گام است و برای تکمیل کار و ثبت درخواست حذف باید به ابزار وبمستر سرویس هایی مانند گوگل (Google) در آدرس:https://www.google.com/webmasters/tools
و بینگ (Bing) در آدرس:http://www.bing.com/toolbox/webmaster
مراجعه کنیم.با این تفاسیر استفاده از این فایل از نظر فنی همیشه هم ضروری نیست و همانطور که گفتیم در موارد مسدود کردن دسترسی ربات ها به صفحات خاص (URLهای خاص) کاربرد دارد اما به دلیل اینکه اکثر ربات های جستجوگر (Crawler Bots) همواره فایل robots.txt را از سرور درخواست می کنند بهتر است برای اجتناب از افزایش خطاهای 404 که در بخش Log ها و آمار سایت جلوه خوبی ندارد حتی شده یک فایل خالی با این نام در ریشه سایت خود قرار دهیم.
نکته: استفاده از فایل robots.txt صرفا به مجاز و غیرمجاز کردن آدرس ها برای ربات های موتورهای جستجو محدود نمی شود، در ادامه خواهیم دید که تعیین دوره تاخیر رجوع به صفحات با دستور Crawl-delay و معرفی نقشه XML سایت نیز می تواند از جمله کاربردهای این فایل باشد.
همه ربات ها از دستورات فایل robots.txt پیروی نمی کنند!
در خصوص استفاده از دستورات فایل robots.txt به این نکته باید توجه داشته باشیم که تنها ربات های خزنده برخی سرویس ها و شرکت های معتبر به قوانین پروتکل استثناء سازی ربات ها (REP مخفف Robots Exclusion Protocol) ناقص یا کامل احترام می گذارند و در مقابل برخی هکرها حتی برای ارسال اسپم یا نفوذ به صفحات حساس سایت ها نیز ممکن است از این فایل سوء استفاده کنند، لذا این نکته دارای اهمیت زیادی است که هیچگاه برای محافظت از دایرکتوری های حساس مانند دایرکتوری مدیریت سایت به این فایل تکیه نکنیم و آدرس دایرکتوری های مخفی را در فایل robots.txt قرار ندهیم چون محتوای این فایل به راحتی در معرض دید عموم است و درج اطلاعات ساختار سایت ممکن است موجبات سوء استفاده های احتمالی را فراهم کند، بهترین روش برای جلوگیری از ایندکس نشدن دایرکتوری های حساس این است که هیچ لینک خروجی و در معرض دید و دسترس ربات در صفحات خود نداشته باشیم و از طرف دیگر دسترسی به محتوای این نوع صفحات را با ایجاد سیستم دریافت نام کاربری و کلمه عبور محدود کنیم.
نکته: برخی از ربات ها ممکن است به صورت ناقص از پروتکل REP پشتیبانی کنند و همچنان قوانین خاص خودشان را در پیمایش آدرس های مختلف داشته باشند، نمونه بارز این ربات ها مربوط به سرویس گوگل (Googlebot) است که برخی قوانین فایل robots.txt را نادیده می گیرد.
نحوه تنظیم دستورات فایل robots.txt
دستورات فایل robots.txt معمولا از دو قسمت اصلی به شکل نمونه Syntax زیر تشکیل می شوند:
User-agent: Googlebot
Disallow: /dir/
در این نمونه دستور قسمت User-agent نام خزنده یا ربات و قسمت Disallow آدرس دایرکتوری که دسترسی به آن را مسدود می کنیم را مشخص می کند، عبارت Googlebot نام ربات سرویس گوگل است که این قسمت می تواند با نام ربات های دیگر (به فرض Bingbot) یا کاراکتر * (همه ربات ها) تکمیل شود، به طور مثال اگر در فایل خود کد زیر را قرار دهیم:User-agent: *
Disallow: /image/
با پیروی از این دستور ربات ها صرف نظر از نامشان دیگر محتوای فولدر image را بررسی نکرده و سرویس جستجوی مربوطه هم در لیست نتایج آدرس های متناظر با این دایرکتوری را نمایش نمی دهد، همان طور که اشاره شد هنگامی که از علامت ستاره (*) برای قسمت User-agent استفاده می کنیم واسط کاربری شامل تمام ربات ها می شود.نکته: به یاد داشته باشیم که در ابتدای آدرس دایرکتوری ها باید از یک اسلش (/) نیز استفاده و در درج حروف به بزرگ یا کوچک بودن آنها نیز دقت کنیم (به فرض دایرکتوری Image در مقایسه با image از دید ربات ها معمولا دو آدرس متفاوت هستند).
چند مثال از کاربرد دستورات فایل robots.txt
برای آشنایی اولیه و شروع استفاده از فایل robots.txt در ادامه چند نمونه دستور ساده با تنظیمات متفاوت را با هم بررسی می کنیم.
- غیرمجاز (Disallow) کردن یک دایرکتوری خاص برای تمام ربات ها:
User-agent: *
Disallow: /old-posts/
این دستور دسترسی به فولدر فرضی old-posts را برای تمام ربات ها غیرمجاز می کند.- غیرمجاز (Disallow) کردن یک فایل در دایرکتوری برای تمام ربات ها:
User-agent: *
Disallow: /old-posts/mypic.jpg
نمونه دستور بالا دسترسی به فایل mypic.jpg را که در دایرکتوری old-posts قرار دارد برای تمام ربات ها غیرمجاز می کند.- غیرمجاز (Disallow) کردن یک فایل در ریشه سایت برای تمام ربات ها:
User-agent: *
Disallow: /expired.html
در این نمونه دستور فایل expired.html که در ریشه سایت قرار دارد برای تمام ربات ها غیرمجاز شده است.- غیرمجاز (Disallow) کردن یک فولدر برای یک ربات خاص و مجاز (Allow) کردن آن برای سایر ربات ها:
User-agent: Googlebot
Disallow: /nofollow/
در حالت پیش فرض کلیه آدرس هایی که Disallow نباشند Allow هستند و لذا در نظر گرفتن آدرس های مجاز در اینگونه موارد ضرورتی ندارد.- غیرمجاز (Disallow) بودن تمام صفحات برای تمام ربات ها:
User-agent: *
Disallow: /
در استفاده از این شکل دستورات باید دقت زیادی داشته باشیم چون ممکن است به شکل ناخواسته ای دسترسی ربات ها به کل سایت را مسدود کنیم.- مجاز (Allow) بودن تمام صفحات برای تمام ربات ها:
User-agent: *
Allow: /
- مجاز (Allow) و غیرمجاز (Disallow) بودن برخی صفحات برای تمام ربات ها:User-agent: *
Disallow: /some-page-1/
Disallow: /some-page-2/
Allow: /some-page-3/
همان طور که مشخص است برای یک User-agent همزمان می توانیم آدرس های متعددی را مجاز و غیرمجاز کنیم.در صورت نیاز برای دیدن لیست کامل ربات ها و درج در قسمت User-agent می توانیم به دیتابیس موجود در آدرس زیر مراجعه کنیم:
http://www.robotstxt.org/db
اختصاص دستور برای ربات های خاص معمولا خیلی کاربردی نیست اما جهت آشنایی بیشتر اطلاع از اسامی و جزئیات ربات های سرویس های مختلف خالی از لطف نخواهد بود.یادآوری مهم: مجاز یا غیرمجاز بودن صرفا برای ربات هایی کاربرد دارد که به قوانین فایل robots.txt احترام بگذارند در غیر اینصورت دستورات این فایل برای ربات های ناشناس بی اثر خواهد بود.
استفاده از الگو (Pattern) در دستورات فایل robots.txt
علاوه بر دستورات ساده بالا برخی ربات ها (از جمله ربات سرویس گوگل) از قوانین پیچیده تری نیز پشتیبانی می کنند، این قوانین بر مبنای الگوی (Pattern) عبارات با قاعده (Regular Expressions) هستند با این تفاوت که در اینجا فقط دو کاراکتر دستوری خاص (* $) قابل استفاده است که در ادامه بررسی می کنیم.
- برای تطبیق "توالی از عبارات" از کاراکتر * استفاده می شود، به طور مثال اگر ما چند دایرکتوری داشته باشیم که با عبارت فرضی book شروع شده و بخواهیم با یک دستور دسترسی ربات را به تمام آنها مسدود کنیم، خواهیم نوشت:
User-agent: Googlebot
Disallow: /book*/
به این ترتیب فولدرهای فرضی booksell، bookread، bookiran و... برای ربات مسدود خواهند شد، لذا نقش علامت * در الگو این است که عبارات بعد از آن در تطبیق نادیده گرفته می شوند (* یعنی هر کاراکتری با صفر تکرار یا بیشتر).- برای مسدود کردن آدرس های URL داینامیک از کاراکتر * به همراه علامت سوال (?) استفاده می کنیم، به فرض دستور زیر تمام آدرس های داینامیک را برای تمام ربات ها غیر قابل دسترس می کند:
User-agent: *
Disallow: /*?
دقت کنیم کاراکتر علامت سوال (?) مربوط به شروع قسمت داینامیک آدرس ها است، به فرض:http://example.com/?id=1
و در فایل robots.txt صرفا یک کاراکتر متنی است (نه دستوری)، همان طور که گفتیم تنها دو کاراکتر * و $ نقش دستوری و حالت Regular Expressions دارند.بر همین مبنا می توانیم برای ساب دایرکتوری ها (دایرکتوری های زیر مجموعه) نیز دسترسی را مسدود کنیم و از این نظر محدودیتی نیست:
User-agent: *
Disallow: /articles/*?
- برای مشخص کردن انتهای یک الگو از علامت $ استفاده می شود، به فرض اگر قصد ما مسدود کردن تمام فایل های با پسوند png برای ربات ها باشد خواهیم نوشت:User-agent: *
Disallow: /*.png$
به این ترتیب تمام فایل هایی که به پسوند png ختم شده باشند برای تمام ربات ها مسدود می شوند.یا اگر بخواهیم آدرس هایی را که به عبارت فرضی private ختم می شوند را برای ربات گوگل مسدود کنیم خواهیم نوشت:
User-agent: Googlebot
Disallow: /*private$
که این دستور نمونه آدرس های فرضیhttp://example.com/account/public-private
http://example.com/?domain=private
http://example.com/1234/private
را برای ربات گوگل مسدود خواهد کرد.ایجاد تاخیر در درخواست ها با دستور Crawl-delay
ایجاد وقفه و تاخیر در روند درخواست آدرس های URL سایت دستور دیگری است که با عبارت Crawl-delay در فایل robots.txt قابل تعریف است، در حالت معمول ربات ها می توانند در فواصل زمانی خیلی کم و هر چند ثانیه یکی از صفحات سایت را درخواست کنند که تعداد بالا و مداوم این درخواست ها ممکن است فشار زیادی به سرور وارد کند، هرچند این حالت خیلی متداول نیست اما در صورت لزوم برای کنترل و کاستن از این فشار قابلیتی تحت عنوان Crawl-delay وجود دارد که می توانیم در فایل robots.txt به صورت نمونه زیر از آن استفاده کنیم:
User-agent: *
Crawl-delay: 15
به این صورت حداقل زمان وقفه بین درخواست های ربات باید 15 ثانیه باشد به عبارتی هر 15 ثانیه صرفا یک درخواست URL از سرور مجاز است.نکته: گوگل از دستور Crawl-delay پشتیبانی نمی کند، برای تنظیم روند درخواست های ربات این سرویس باید از قابلیت Crawl Rate در قسمت تنظیمات ابزار وبمستر گوگل (Google Webmasters Tools) در آدرس زیر استفاده کنیم:
https://www.google.com/webmasters/tools/settings
در این قسمت با داشتن حساب گوگل و ثبت قبلی سایت می توانیم میزان دفعات مراجعه ربات به صفحات را بین مقدار کم (Low) تا زیاد (High) تنظیم کنیم، البته گوگل توصیه می کند که تنظیمات پیش فرض را تغییر ندهیم مگر اینکه واقعا ربات این سرویس باعث کندی عملکرد سرور سایت شده باشد.افزودن نقشه XML سایت به فایل robots.txt
قابلیت دیگر فایل robots.txt امکان درج نقشه XML سایت (Sitemap) است که بخصوص مورد علاقه موتورهای جستجو بوده و فاکتور مهمی در بهینه سازی سایت (SEO) محسوب می شود، نقشه XML عموما شامل کل آدرس های URL یکتای سایت در قالب فایلی با پسوند xml است که برای معرفی این فایل به موتورهای جستجو از عبارت Sitemap به شکل نمونه زیر استفاده می کنیم:
User-agent: *
Disallow: /articles/22.html
Disallow: /articles/23.html
Disallow: /articles/?post=159&title=آموزش-برنامه-نویسی-وب
Sitemap: https://webgoo.ir/sitemap.xml
نقشه XML معمولا در ریشه سایت قرار داشته و به پسوند xml ختم می شود اما در حال حاضر الزامی هم برای این حالت نیست و ممکن است در آدرس های دیگری بدون پسوند xml نیز وجود داشته باشد اما مهم است که به نحو صحیح در قسمت Sitemap معرفی و خروجی XML معتبر داشته باشد.سایر روش های مسدود سازی آدرس ها برای ربات های خزنده
در پایان این مطلب بد نیست اشاره ای به سایر روش های مسدود سازی آدرس های URL برای ربات های خزنده وب داشته باشیم، علاوه بر استفاده از دستورات فایل robots.txt جهت کنترل رفتار خزنده های با اصل و نسب دو روش دیگر نیز برای این کار وجود دارد:
- روش اول استفاده از متاتگ noindex است که در قسمت head سورس کد HTML صفحه قرار می گیرد، به طور مثال:
<meta name="robots" content="noindex">
یا <meta name="googlebot" content="noindex">
در صورت وجود این متاتگ در سورس HTML صفحه عموم ربات های خزنده پیرو پروتکل REP از دستورات آن تبعیت کرده و آدرس URL را ایندکس نخواهند کرد.- روش دوم ارسال سربرگ HTTP برای ربات ها در هنگام درخواست آدرس URL صفحه است، انجام این کار در PHP می تواند با استفاده از توابع header و مقادیر X-Robots-Tag: noindex به شکل نمونه زیر باشد:
header("X-Robots-Tag: noindex", true);
یاheader("X-Robots-Tag: noindex, nofollow", true);
در صورت استفاده از nofollow در کنار noindex علاوه بر ایندکس نشدن محتوای صفحه، آدرس های URL ای که از صفحه فعلی به صفحات دیگر ارجاع داده شده نیز دنبال (Follow) نخواهند شد.نکته: برخی از ربات ها ممکن است به صورت ناقص از پروتکل REP پشتیبانی کنند و همچنان قوانین خاص خودشان را در پیمایش آدرس های مختلف داشته باشند، لذا همیشه این احتمال وجود دارد که صفحات در دسترس سایت ایندکس و آدرس های URL آن دنبال (Follow) شوند.

مشکلات رایج در کدنویسی معتبر و رفع آنها
چگونه سایت یا وبلاگ را برای موتورهای جستجو بهینه سازی کنیم؟
رتبه بندی الکسا (Alexa) چیست و چقدر اهمیت دارد؟!
دوباره نویسی آدرس های وب (URL Rewrite) در htaccess
چرا برخی سایت ها و وبلاگ ها رتبه الکسای بهتری دارند؟


User-agent: *
Disallow:
User-agent: *
Allow: /
چون هیچ قسمتی Disallow نشده یعنی مجاز بودن تمام صفحات برای تمام ربات ها.یک سوالی داشتم که خیلی درگیرش شدم ممنون میشم زود جواب رو بدید . سوالم اینه اگه من سایتی مانند:
http://url
دارم و اگر بخوام لینک زیر رو:http://url/test
از ایندکس و سایتم حذف کنم و موقتی نباشه در فایل روبوت.تکست چی بنویسمUser-agent: *
Disallow: /test/
البته همان طور که در آموزش گفته شده فایل robots.txt صرفا برای ربات هایی عمل می کند که از دستورات آن پیروی کنند (به طور مثال ربات گوگل)، اگر دایرکتوری نیاز به محافظت بیشتر دارد باید از روش های دیگر مانند کلمه عبور استفاده کنیم.مهندس جان سایت بنده خیلی خوب بود و سئو عالی هم داشت ولی یکباره در وبمستر تولز گوگل نشون میده که حدود 400 ارور 404 داریم و سایت مپ سایت هم در ایندکس مشکل براش پیش اومده خواهش میکنم کمکم کنید الان برای درست کردن سایت باید از کجا شروع کنم؟ تایتل و توضیحات متا سایت هم در سرچ گوگل به صورت کلمات چینی و عجیب و غریب نشون داده میشه
و اینکه اگه کلا بخوام از کد زیر استفاده کنم
User-agent: *
Allow: /
خطر جدی ای سایت رو تهدید می کنه؟ اصلا به صلاح هست از چنین کدی به صورت جدی استفاده کرد یا نه؟ممنون و تشکر
Disallow: /images/
توجه داشته باشید که اعمال تغییرات در گوگل نیاز به گذشت مدت زمان در حدود یک هفته یا کمی بیشتر دارد.سایتم تو گوگل بالاست تو صفحه اول یا حتی تو سطر نخست اما متاسفانه اصلا عکس ها رو گوگل نمی شناسه . احتمال داره این موضوع نشات گرفته از محتوای فایل robots.txt باشه یا نه . ممنون که وقت میذارین
وقتی سایتم رو سرچ می کنم مینویسه به خاطر robost.txt هیچ توضیحی نیست بعد فایل robost.txt در ریشه وجود نداره که ویرایشش کنم اما وقتی آدرس رو به این شکل هست.
http://nem.ir/robost.txt
این کدم داخلش استUser-agent: *
Disallow:
بعد میرم یه فایل با همین نام در ریشه میسازم robost.txt و دستور مینویسم داخلش و آدرس رو دوباره باز می کنم با دستور جدید میاد اما باز گوگل همین رو مینویسه که به خاطر robost.txt هیچ توضیحی نیستلطفا راهنمایی کنید.
تشکر
http://forum.wp-parsi.com/topic/44641-%D8%B9%D8%AF%D9%85-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%B1%D8%A8%D8%A7%D8%AA-%DA%AF%D9%88%DA%AF%D9%84-%D8%A8%D9%87-%D8%A8%D8%B9%D8%B6%DB%8C-%D8%A7%D8%B2-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-js/#comment-261848
خیلی ممنون از مطلب مفیدتون
یه سوال دارم
این هایی که نوشته باید همشون رو استفاده کنیم یا نه فقط مثلا سایت مپ رو میذارم داخلش
و از کد دیگه ای استفاده نمیکنم
این اوکی هست یا نه ؟
User-agent: *
Allow: /
Sitemap: https://webgoo.ir/sitemap.xml
حذف شد
و توی هاست آپلودش کردم ولی وقتی ادرس رو میزنی این دستور هارو برام میارهحذف شد
ممنون میشم راهنمایی کنید بگید چیکاری انجام بدم این مشکل رو حل کنمببخشید من نمیتونم علمی یا کتابی مثل شما صحبت کنم ولی ممنون از اینکه خیلی کامل و مفید توضیح دادین و مشکل من هم همینهایی که توضیح دادین و اینکه سایت گوگل کام باز نمیشه علامت / اینجوری بعدش میاد و تنظیمات کل پیش فرض تبلتم رو در اختیار گرفته و نسخه inc گوگل برام میاد و مشکل باز کردن عکس رو هم دارم و در ضمن لطفا بگین این کدهایی رو که گفتین کجا تایپش کنیم
با تشکر از خدمات ارزندتون
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.