מה זה robots.txt?
robots.txt הוא קובץ טקסט שיושב בשורש האתר ומגדיר אילו כתובות סורקים רשאים לשלוף. robots.txt שולט בסריקה, לא באינדוקס.
robots.txt הוא קובץ טקסט אחד שיושב בשורש האתר, והוא הדבר הראשון שבוט מבקש עוד לפני שהוא ניגש לעמוד כלשהו. הכללים שבו חלים רק על הכתובת המדויקת שהקובץ יושב בה: אותו דומיין, אותו פרוטוקול (http או https) ואותו פורט. לכן לכל תת-דומיין צריך קובץ משלו.
איך robots.txt עובד
ממה robots.txt בנוי
הקובץ בנוי מקבוצות. כל קבוצה נפתחת בשורת user-agent שמציינת לאיזה בוט היא מדברת, ואחריה שורות disallow ו-allow עם נתיב. הבוט מוצא את הקבוצה ששייכת לו ופועל לפיה. השימוש הרגיל הוא להרחיק בוטים מנתיבים שאין להם מה לחפש בהם, כמו תוצאות חיפוש פנימיות ועמודי סינון שנוצרים מפרמטרים. באתר גדול זה בדיוק המקום שבו נשפך תקציב הסריקה.
מי קובע את כללי robots.txt
התקן מאחורי הקובץ הוא RFC 9309, שפורסם ב-2022 וקיבע פרוטוקול שקיים מ-1994. RFC 9309 אומר במפורש שהכללים בקובץ אינם צורה של הרשאת גישה: זו בקשה שבוט יכול לכבד או להתעלם ממנה, לא מנעול. גוגל מפרסמת מעל התקן את הפרשנות שלה ושומרת את הקובץ במטמון עד 24 שעות, כך שעריכה לא נכנסת לתוקף מיד.
על מה robots.txt לא חל
הקובץ ככלל לא חל על fetchers שמשתמש יזם, שמגיעים כי מישהו ביקש עכשיו ולא כחלק מסריקה. והוא גם פשוט לא חל על כל מי שמחליט לא לכבד אותו, כי הוא לא חוק.
דוגמה לקובץ robots.txt
הכלל שהכי קל לפספס הוא שעל כל בוט חלה קבוצה אחת בלבד. גוגל מנסחת את זה כ-”Only one group is valid for a particular crawler”, והבוט בוחר את הקבוצה עם ה-user-agent הספציפי ביותר שמתאים לו:
User-agent: *
Disallow: /search
User-agent: Googlebot
Disallow: /tmpGooglebot קורא רק את הקבוצה השנייה. החסימה של /search שכתובה בקבוצת הכוכבית לא חלה עליו בכלל, והוא יסרוק את /search בחופשיות. שתי הקבוצות לא מתמזגות.
איך robots.txt קשור ל-SEO ול-GEO
robots.txt יושב לפני כל השאר. שורת disallow אחת מונעת מהבוט לשלוף את העמוד, ולעמוד שלא נשלף אין תוכן שייכנס לאינדקס ואין על מה לדרג אותו. שום דבר בהמשך השרשרת לא מתקן שליפה שלא קרתה, לא תוכן טוב ולא קישורים נכנסים.
אותו קובץ עצמו מוגש גם לבוטים של מנועי החיפוש האחרים ושל מנועי ה-AI. OpenAI מתעדת ש-GPTBot מכבד אותו, ולכן אותה שורה שמונעת מהתוכן להיכנס לאינדקס מונעת ממנו גם להופיע בתשובות שבהן העמוד היה יכול להיות מצוטט.
ההבדל בין robots.txt ל-noindex
robots.txt עוצר סריקה. noindex עוצר אינדוקס. ההבדל נהיה מעשי ברגע שמנסים להסתיר עמוד מהתוצאות, והוא עובד לשני הכיוונים. גוגל כותבת שעמוד שחסום בקובץ עדיין יכול להיכנס לאינדקס ולהופיע בחיפוש בלי תיאור, כי הכתובת מתגלה מקישורים חיצוניים. ולהפך: בוט שנחסם מלסרוק את העמוד לא יראה את תגית ה-noindex שכתובה בתוכו, וגוגל דורשת במפורש שהעמוד לא ייחסם ב-robots.txt כדי שהכלל הזה יעבוד. להוצאת עמוד מהתוצאות צריך לאפשר סריקה ולהוסיף noindex, או לחסום בסיסמה.
שאלות על robots.txt
מה קורה אם ה-robots.txt מחזיר שגיאת 5xx?▼
robots.txt שמחזיר 5xx גורם לגוגל לעצור את הסריקה ב-12 השעות הראשונות ולהמשיך לנסות לשלוף אותו. אחר כך היא סורקת לפי העותק התקין האחרון מהמטמון עד 30 יום, ואם אין עותק שמור היא מניחה שאין הגבלות סריקה. אחרי 30 יום, אם האתר עצמו נגיש, גוגל מתייחסת אליו כאילו אין robots.txt; אם לאתר יש בעיות זמינות, היא עוצרת את הסריקה.
RFC 9309 מחמיר יותר, וגם לא לגמרי עקבי: סעיף 2.3.1.4 קובע שקובץ שלא נגיש מחייב להניח חסימה מלאה, ואילו סעיף 2.4 מתיר להשתמש בעותק מהמטמון מעבר ל-24 שעות דווקא כשהקובץ לא נגיש. 12 השעות ו-30 הימים הם המספרים של גוגל, לא של התקן.
הפער הברור ביותר הוא כשאין עותק שמור: גוגל מניחה שאין הגבלות, התקן דורש להניח חסימה מלאה.
מה קורה אם ה-robots.txt מחזיר 404?▼
robots.txt שמחזיר 404, כמו כל שגיאת 4xx חוץ מ-429, נחשב אצל גוגל כאילו קובץ תקין לא קיים, כלומר אין שום הגבלת סריקה. גם RFC 9309 מרשה לסורק לגשת לכל משאב במצב הזה. 429 מטופל אצל גוגל כשגיאת שרת. קובץ שנמחק בדיפלוי או נתיב שהשתנה מוחקים את כל החסימות באותו רגע, בלי שום התראה.
חסמתי דף ב-robots.txt והוא עדיין מופיע בגוגל. למה?▼
robots.txt חוסם את הסריקה, לא את הכתובת. בניסוח של גוגל: היא לא תסרוק ולא תאנדקס תוכן שחסום ב-robots.txt, אבל היא כן עלולה למצוא ולאנדקס כתובת חסומה אם יש אליה קישורים ממקומות אחרים ברשת, ואז התוצאה תופיע בלי תיאור.
להוצאת עמוד מהאינדקס צריך לאפשר סריקה ולהוסיף noindex.
האם robots.txt תומך ב-wildcards?▼
robots.txt תומך בשני wildcards (תווים כלליים): הכוכבית, שמייצגת אפס תווים או יותר, וסימן הדולר, שמסמן את סוף הכתובת. RFC 9309 מגדיר את שניהם כתווים שבוטים חייבים לתמוך בהם, וגוגל מתעדת שהיא, בינג ומנועים מרכזיים נוספים אכן תומכים בהם. השורה disallow: /*.pdf$ חוסמת סריקה של כל קובצי ה-PDF באתר.
האם robots.txt רגיש לאותיות גדולות וקטנות?▼
robots.txt רגיש לרישיות רק בחלק מהשורה, וזה מקור נפוץ לטעויות. שמות השדות והערך של user-agent אינם רגישים לרישיות, ולכן Googlebot ו-googlebot זהים.
הנתיב בשורות disallow ו-allow כן רגיש, כך ש-disallow: /Admin לא חוסם את /admin. גם שם הקובץ עצמו חייב להיות robots.txt באותיות קטנות, לפי RFC 9309.
האם כל הבוטים מכבדים robots.txt?▼
לא כל הבוטים מכבדים robots.txt, ומשתי סיבות נפרדות.
הראשונה היא שאין אכיפה: גוגל כותבת שההוראות בקובץ לא יכולות לכפות התנהגות על בוט, ולכן בוט זדוני פשוט מתעלם.
השנייה היא החרגה מתועדת: גוגל כותבת ששליפות שהמשתמש יזם מתעלמות ככלל מכללי robots.txt, ו-OpenAI כותבת על ChatGPT-User שמכיוון שהפעולות האלה נובעות מבקשת משתמש, ייתכן שכללי robots.txt לא חלים עליהן.