robots.txt क्या है?
robots.txt होस्ट के रूट पर रखी एक सादी टेक्स्ट फ़ाइल है जो क्रॉलर को बताती है कि वे कौन-से पाथ फ़ेच कर सकते हैं — User-agent टोकन के नाम Allow और Disallow नियमों के ग्रुप के रूप में। RFC 9309 ने 2022 में इसे मानक बनाया: सबसे सटीक मेल खाने वाला नियम जीतता है, फ़ाइल पर 4xx का मतलब कोई रोक नहीं और 5xx का मतलब कुछ भी क्रॉल नहीं होगा। यह क्रॉलिंग को नियंत्रित करती है, इंडेक्सिंग को नहीं, और इसे मानना स्वैच्छिक है।
सुरक्षा नोट: robots.txt सार्वजनिक होती है: किसी निजी admin पाथ का नाम लेने वाली Disallow लाइन उसे फ़ाइल पढ़ने वाले हर व्यक्ति को बता देती है। निजी हिस्सों को authentication से सुरक्षित करें, robots.txt से नहीं।
Robots.txt चेकर कैसे इस्तेमाल करें
- साइट का कोई भी URL डालें (टूल उसके रूट से /robots.txt पढ़ता है), या फ़ेच किए बिना जाँचने के लिए फ़ाइल को दूसरे फ़ील्ड में पेस्ट करें।
- जिस क्रॉलर को टेस्ट करना है उसका नाम लिखें — Googlebot या Bingbot जैसा टोकन, या उन क्रॉलर के लिए * जिनका अपना ग्रुप नहीं है।
- टेस्ट करने वाले पाथ या URL हर लाइन में एक लिखें और «robots.txt जाँचें» दबाएँ।
- पाथ टेस्ट टेबल पढ़ें: Allowed या Disallowed, फ़ैसला करने वाला नियम और उसकी लाइन। गलतियाँ और चेतावनियाँ सूचियाँ जो बताएँ उसे ठीक करें और फिर से जाँचें।
Robots.txt चेकर की खूबियाँ
- किसी भी सार्वजनिक साइट के रूट से /robots.txt को Mutqan सर्वर के ज़रिए फ़ेच करता है, या पेस्ट की गई फ़ाइल को कहीं भेजे बिना पार्स करता है
- एक क्रॉलर टोकन (Googlebot, Bingbot, *) के लिए पाथ या पूरे URL की सूची टेस्ट करता है और हर नतीजे के पीछे का नियम और लाइन नंबर बताता है
- RFC 9309 मिलान: क्रॉलर का अपना ग्रुप "*" ग्रुप की जगह लेता है, सबसे लंबा पाथ जीतता है, बराबरी पर Allow जीतता है, * और $ वाइल्डकार्ड, percent-encoding सामान्यीकृत
- क्रॉलर जो स्टेटस-कोड नियम मानते हैं वही लागू करता है: 4xx यानी कोई रोक नहीं, 5xx यानी हर पाथ पर रोक; Googlebot 429 को भी 5xx जैसा मानता है, इसलिए टेस्ट किया क्रॉलर Google का हो तो टूल भी यही करता है
- हर User-agent ग्रुप उसके Allow और Disallow की गिनती और Crawl-delay के साथ, और हर Sitemap लाइन दिखाता है
- सिंटैक्स की गलतियाँ और संदिग्ध लाइनें लाइन नंबर के साथ: User-agent से पहले के नियम, relative Sitemap URL, गलत स्पेलिंग वाले डायरेक्टिव, "/" के बिना शुरू होने वाले पाथ
- फ़ेच की पूरी जानकारी: रीडायरेक्ट के बाद का अंतिम URL, HTTP स्टेटस, Content-Type, साइज़, resolved एड्रेस और समय
इनपुट और आउटपुट
इनपुट
- साइट URL — साइट का कोई भी पता; टूल उसी scheme, होस्ट और पोर्ट के रूट से /robots.txt माँगता है।
- या पेस्ट की गई robots.txt — आपके ब्राउज़र में पार्स होती है, कुछ फ़ेच नहीं होता; साथ में URL भी दिया हो तो वह सिर्फ़ पाथ टेस्ट के लिए होस्ट बताता है।
- टेस्ट करने वाला यूज़र एजेंट — क्रॉलर का product token (Googlebot, Bingbot, *) या पूरी User-Agent स्ट्रिंग, जिससे टोकन निकाला जाता है।
- टेस्ट करने वाले पाथ या URL — हर लाइन में एक, 200 तक; query string गिनी जाती है, #fragment अनदेखा होता है।
आउटपुट
- सारांश — फ़ेच का HTTP स्टेटस और क्रॉलर उसे कैसे लेते हैं, ग्रुप, नियम और Sitemap लाइनों की गिनती, आपके क्रॉलर के लिए इस्तेमाल हुआ ग्रुप, और गलतियों व चेतावनियों की संख्या।
- पाथ टेस्ट — हर पाथ के लिए Allowed या Disallowed, फ़ैसला करने वाले नियम और उसकी लाइन के साथ।
- ग्रुप — हर User-agent ग्रुप, उसके Allow और Disallow की गिनती, Crawl-delay और पहली लाइन के साथ।
- Sitemaps, गलतियाँ और चेतावनियाँ — घोषित sitemap URL और मिली समस्याएँ, हर एक अपने लाइन नंबर के साथ।
- फ़ेच विवरण — माँगा गया और अंतिम URL, स्टेटस, Content-Type, डाउनलोड हुए बाइट, resolved एड्रेस और समय।
Robots.txt चेकर का उदाहरण
Googlebot ग्रुप जो "*" के नियमों की जगह लेता है
इनपुट:
पेस्ट की गई फ़ाइल: User-agent: * / Disallow: /cart/ / Disallow: /search / Allow: /search/help / Crawl-delay: 5 — User-agent: Googlebot / Disallow: /tmp/ / Disallow: /*.pdf$ — Sitemap: https://www.example.com/sitemap.xml
क्रॉलर: Googlebot · पाथ: /cart/checkout, /search?q=shoes, /docs/guide.pdf, /tmp/reportआउटपुट:
Groups 2 · Rules 5 · Sitemaps 1 · Group used googlebot (line 8) · Errors 0 · Warnings 1
/cart/checkout → Allowed (no matching rule: the * group does not apply to Googlebot)
/search?q=shoes → Allowed (no matching rule)
/docs/guide.pdf → Disallowed — Disallow: /*.pdf$ (line 10)
/tmp/report → Disallowed — Disallow: /tmp/ (line 9)
Warning: Line 6: Crawl-delay is not part of RFC 9309 — Googlebot ignores it; Bing honours it.Robots.txt चेकर के नतीजे कैसे पढ़ें
Allowed और Disallowed सिर्फ़ क्रॉलिंग की बात करते हैं। Disallowed का मतलब है कि नियम मानने वाला क्रॉलर उस URL को नहीं माँगेगा; इसका मतलब यह नहीं कि URL छिपा, सुरक्षित या सर्च नतीजों से हटा हुआ है।
"No matching rule" का मतलब है कि क्रॉलर के ग्रुप में उस पाथ का कोई नियम नहीं, इसलिए वह allowed है। «इस्तेमाल हुआ ग्रुप» में "—" का मतलब है कि फ़ाइल में न तो उस क्रॉलर के नाम का ग्रुप है न "*" ग्रुप, तो उस पर कुछ लागू नहीं होता।
robots.txt पर 4xx (आमतौर पर 404) हर पाथ को allowed कर देता है; 5xx या टाइमआउट फ़ाइल पढ़े जाने तक हर पाथ को disallowed कर देता है, और Googlebot 429 को भी 5xx जैसा मानता है। जिस साइट को क्रॉल होना है, उसे /robots.txt पर 200 या 404 देना चाहिए, कभी एरर नहीं।
गलतियाँ वे लाइनें हैं जिन्हें क्रॉलर अनदेखा करते हैं (कोलन नहीं, किसी User-agent से पहले नियम, relative Sitemap URL)। चेतावनियाँ वे लाइनें हैं जिन्हें क्रॉलर पढ़ते तो हैं, पर शायद लेखक के इरादे से अलग (बिना "/" का पाथ, खाली Disallow, गलत स्पेलिंग वाला डायरेक्टिव, Crawl-delay)।
Robots.txt चेकर कब इस्तेमाल करें
- रिलीज़ से पहले पक्का करें कि नया Disallow सिर्फ़ उन्हीं admin या staging पाथ को रोकता है जिनके लिए लिखा गया, उनके पास के प्रोडक्ट पेज को नहीं।
- Search Console में "Blocked by robots.txt" क्यों आ रहा है, यह जानें: URL को Googlebot के रूप में टेस्ट करें और फ़ैसला करने वाली लाइन पढ़ें।
- साइट को नए होस्ट या HTTPS पर ले जाने के बाद जाँचें कि नया origin अपनी robots.txt देता है और उसकी Sitemap लाइनें नए पतों की ओर हैं।
- ऐसी फ़ाइल की समीक्षा करें जो कुछ क्रॉलर को अलग ग्रुप देती है, और देखें कि हर टोकन किस ग्रुप में आता है।
समस्या निवारण
- बहुत सारे "not a field: value line" errors और text/html Content-Type: सर्वर /robots.txt पर HTML पेज लौटा रहा है, अक्सर 200 स्टेटस के साथ भेजा गया एरर पेज या ऐप शेल। उस पाथ पर सादी टेक्स्ट फ़ाइल रखें।
- robots.txt पर HTTP 401 या 403: क्रॉलर इसे "कोई रोक नहीं" मानते हैं, जो साइट मालिक शायद ही चाहता हो। फ़ाइल सबके लिए पढ़ने योग्य होनी चाहिए।
- जिस पाथ के disallowed होने की उम्मीद है वह Allowed दिख रहा है: अक्षरों का केस देखें (पाथ case-sensitive हैं), शुरुआत में छूटा "/" देखें, और यह कि क्या क्रॉलर का अपना ग्रुप है जो "*" के हर नियम को हटा देता है।
- "resolves to an address the Mutqan server may not connect to" या "Port … is not allowed" जैसा इनकार: होस्ट निजी या आरक्षित है, या उसका पोर्ट 80, 443, 8080, 8443 और 3000–3999, 5000–5999, 8000–8999 रेंज से बाहर है। इसकी जगह फ़ाइल पेस्ट करें।
- रीडायरेक्ट के बाद फ़ेच किसी दूसरे होस्ट पर ख़त्म होता है: क्रॉलर जिस फ़ाइल पर पहुँचते हैं उसे मूल होस्ट पर लागू करते हैं। नियम अलग हों तो हर होस्ट पर robots.txt सीधे रखें।
Robots.txt चेकर के बारे में अक्सर पूछे जाने वाले सवाल
Disallow की लाइन मेल खाती दिखती है, फिर भी पाथ Allowed क्यों आ रहा है?
RFC 9309 सबसे सटीक नियम लागू करता है — जिसका मेल खाता पाथ सबसे लंबा हो — और Allow व Disallow बराबर लंबे हों तो Allow जीतता है, इसलिए /search/help के लिए "Allow: /search/help" नियम "Disallow: /search" पर भारी पड़ता है। नियम ग्रुप के भी होते हैं: फ़ाइल में Googlebot का अलग ग्रुप हो तो Googlebot पूरे "*" ग्रुप को अनदेखा करता है। पाथ टेस्ट टेबल हर नतीजे के पीछे की लाइन बताती है।
robots.txt 404 या 500 लौटाए तो क्रॉलर क्या करते हैं?
4xx जवाब (404, 403, 401) का मतलब है फ़ाइल उपलब्ध नहीं, इसलिए क्रॉलर हर पाथ फ़ेच कर सकते हैं (RFC 9309 §2.3.1.3)। 5xx जवाब या कोई जवाब न आना यानी फ़ाइल तक पहुँच नहीं, और क्रॉलर को मानना होता है कि हर पाथ पर रोक है (§2.3.1.4)। RFC 9309 429 (Too Many Requests) को 4xx जवाबों में गिनता है, पर Googlebot उसे 5xx जैसा लेता है; इसलिए टेस्ट किया क्रॉलर Google का हो तो टूल 429 पर 5xx का नियम लगाता है, वरना RFC का।
क्या Disallow से पेज Google में दिखना बंद हो जाता है?
नहीं। robots.txt क्रॉलिंग को नियंत्रित करता है, इंडेक्सिंग को नहीं: रोका गया URL उसकी ओर आने वाले लिंक की वजह से नतीजों में दिख सकता है, बस उसकी सामग्री के बिना। पेज को नतीजों से हटाना हो तो उसे क्रॉल होने दें और noindex (meta robots या X-Robots-Tag) भेजें — जो क्रॉलर पेज फ़ेच ही नहीं कर सकता, उसे noindex कभी दिखेगा नहीं।
अंदर के किसी पेज का URL डालूँ तो टूल कौन-सी फ़ाइल फ़ेच करता है?
हमेशा उसी scheme, होस्ट और पोर्ट के रूट वाली /robots.txt: https://shop.example.com/a/b के लिए https://shop.example.com/robots.txt पढ़ी जाती है। हर origin की अपनी फ़ाइल होती है, इसलिए www.example.com और example.com, या http और https, अलग जवाब दे सकते हैं।
क्या Crawl-delay और दूसरी गैर-मानक लाइनें भी जाँची जाती हैं?
Crawl-delay पढ़ा जाता है और हर ग्रुप के साथ दिखता है, इस चेतावनी के साथ कि यह RFC 9309 का हिस्सा नहीं है (Googlebot इसे अनदेखा करता है, Bing मानता है, और Yandex इसकी जगह Yandex Webmaster की crawl-rate सेटिंग इस्तेमाल करता है)। Host, Clean-param जैसी लाइनें ऐसे एक्सटेंशन के रूप में दिखती हैं जिन्हें ज़्यादातर क्रॉलर अनदेखा करते हैं, और Google जिन गलत स्पेलिंग को स्वीकार करता है, जैसे "Dissallow", उन्हें चेतावनी के साथ पढ़ा जाता है।
तकनीकी नोट्स
पार्सिंग और मिलान RFC 9309 (Robots Exclusion Protocol, 2022) के अनुसार हैं। लगातार User-agent लाइनें एक ग्रुप खोलती हैं; क्रॉलर उन ग्रुप का इस्तेमाल करता है जिनका product token उसके अपने टोकन से मेल खाता है (केस से फ़र्क नहीं पड़ता) — सबसे लंबा टोकन जीतता है — और कोई मेल न मिले तभी "*" ग्रुप पर जाता है। नियमों की तुलना percent-normalised पाथ पर होती है, * किसी भी क्रम के अक्षरों से मेल खाता है, अंत में $ पाथ के अंत को बाँधता है, और /robots.txt खुद हमेशा allowed रहती है।
फ़ेच के नतीजे RFC 9309 §2.3.1 के अनुसार: 2xx फ़ाइल पार्स होती है, पाँच तक रीडायरेक्ट फ़ॉलो होते हैं (Mutqan सर्वर अधिकतम पाँच फ़ॉलो करता है), 4xx यानी फ़ाइल उपलब्ध नहीं और कोई रोक नहीं, 5xx यानी पहुँच नहीं और हर चीज़ पर रोक। RFC 9309 429 को 4xx में गिनता है, जबकि Google के क्रॉलर उसे सर्वर एरर मानते हैं; इसलिए टूल 429 पर 5xx का नियम सिर्फ़ तब लगाता है जब क्रॉलर टोकन Google का हो। सिर्फ़ पहले 500 KiB पार्स होते हैं — इतना पढ़ना RFC क्रॉलर से न्यूनतम अपेक्षित करता है।
Sitemap लाइनें ग्लोबल होती हैं — किसी ग्रुप का हिस्सा नहीं — और sitemaps.org प्रोटोकॉल के अनुसार उनका absolute URL होना ज़रूरी है।
सीमाएँ और कार्यप्रणाली
फ़ाइल एक बार, Cloudflare नेटवर्क पर चलने वाले Mutqan सर्वर से, Mutqan के तय User-Agent के साथ फ़ेच होती है। जो साइट User-Agent, देश या IP रेंज के हिसाब से अलग robots.txt देती है, वह असली क्रॉलर को दूसरी फ़ाइल दिखा सकती है।
अधिकतम 512 KiB डाउनलोड होता है और पहले 500 KiB पार्स होते हैं। उसके बाद के नियम क्रॉलर भी अनदेखा करते हैं, इसलिए वे टेस्ट नहीं होते।
नतीजे बताते हैं कि RFC 9309 लागू करने वाला क्रॉलर फ़ाइल को कैसे पढ़ता है। अलग-अलग क्रॉलर बारीकियों में अलग हैं — कुछ * और $ नहीं समझते, Googlebot Crawl-delay अनदेखा करता है — और टूल यह नहीं जान सकता कि कोई क्रॉलर फ़ाइल मानता भी है या नहीं।
सुरक्षा और गोपनीयता
आपके टेस्ट किए पाथ आपके ब्राउज़र से बाहर नहीं जाते: मिलान वहीं होता है, पेस्ट की गई फ़ाइल पर या Mutqan सर्वर की फ़ेच की गई कॉपी पर। फ़ेच के लिए सर्वर को सिर्फ़ उस होस्ट की /robots.txt का पता मिलता है; वह उसे एक बार माँगकर जवाब लौटा देता है और अपने पास नहीं रखता।
साइट को जाने वाली रिक्वेस्ट में हेडर का एक तय सेट होता है, आपकी कुकीज़ या क्रेडेंशियल नहीं। सिर्फ़ उन्हीं साइट को जाँचें जिन्हें टेस्ट करने की आपको अनुमति है।
संदर्भ
- RFC 9309: Robots Exclusion Protocolrobots.txt का मानक: User-agent, Allow और Disallow लाइनों के ग्रुप, सबसे लंबे मिलान की प्राथमिकता, * और $ विशेष अक्षर, और फ़ाइल के 4xx या 5xx लौटाने पर क्रॉलर क्या करते हैं।
- How Google Interprets the robots.txt SpecificationGoogle के क्रॉलर robots.txt कैसे पढ़ते हैं: 500 KiB की सीमा, रीडायरेक्ट, स्टेटस कोड (429 को सर्वर एरर माना जाता है), ग्रुप का चुनाव, और वे नियम जिन्हें Google सहता या अनदेखा करता है, जैसे Crawl-delay।