Robots.txt সংক্রান্ত স্পেসিফিকেশন

মূল প্রতিপাদ্য বিষয়

এই ডকুমেন্ট থেকে আপনি জানতে পারবেন Google কীভাবে robots.txt ফাইল পরিচালনা করে থাকে। এই ফাইল আপনাকে Google-এর ওয়েবসাইট ক্রলার যেভাবে সর্বজনীনভাবে অ্যাক্সেসযোগ্য ওয়েবসাইটগুলি ক্রল ও ইন্ডেক্স করে, তা নিয়ন্ত্রণ করার ক্ষমতা দেয়।

কী কী পরিবর্তন হয়েছে

১ জুলাই ২০১৯-এ, Google ঘোষণা করেছিল যে robots.txt প্রোটোকল একটি ইন্টারনেট স্ট্যান্ডার্ড হয়ে ওঠার পথে কাজ করে চলেছে। এই ডকুমেন্টে এই পরিবর্তনগুলি প্রতিফলিত হয়েছে।

প্রাথমিক সংজ্ঞাগুলি

সংজ্ঞা
ক্রলার ওয়েবসাইট ক্রল করে এমন একটি পরিষেবা বা এজেন্টকে ক্রলার বলা হয়। সাধারণভাবে বলা যায়, কোনও হোস্টে স্ট্যান্ডার্ড ওয়েব ব্রাউজারের মাধ্যমে অ্যাক্সেস করার মতো কন্টেন্ট থাকলে ও সেটির ইউআরএল পরিচিত হলে, একটি ক্রলার সেই ইউআরএলকে অটোমেটিক ও বারবার ক্রল করে। নতুন ইউআরএল খুঁজে পাওয়া গেলে (আগে থেকেই ক্রল করা আছে এমন পৃষ্ঠা অথবা সাইটম্যাপ ফাইল থেকে লিঙ্ক পাওয়ার মতো বিভিন্নভাবে পাওয়া যেতে পারে), সেটিকেও একইভাবে ক্রল করা হয়।
ইউজার-এজেন্ট একটি নির্দিষ্ট ক্রলার বা একাধিক ক্রলারের সেট শনাক্ত করার একটি উপায়।
নির্দেশ একটি ক্রলার বা একাধিক ক্রলারের একটি গ্রুপের জন্য প্রযোজ্য robots.txt ফাইলে উল্লেখ করা নির্দেশাবলীর তালিকা।
ইউআরএল ইউনিফর্ম রিসোর্স লোকেটর, RFC 1738-এ যেমন দেখানো হয়েছে।
শুধু Google-এর জন্য প্রযোজ্য এই এলিমেন্টগুলি শুধু Google কীভাবে robots.txt ফাইল ব্যবহার করে সেই ক্ষেত্রে প্রযোজ্য হয় এবং অন্যান্যদের ক্ষেত্রে সেগুলি অপ্রাসঙ্গিক হতে পারে।

প্রযোজ্যতা

Google-এর সমস্ত অটোমেটিক ক্রলার এই ডকুমেন্টে উল্লেখ করা নির্দেশাবলী মেনে চলে। ব্যবহারকারীর হয়ে কোনও এজেন্ট ইউআরএল অ্যাক্সেস করলে (যেমন, অনুবাদ, ম্যানুয়ালি সাবস্ক্রাইব করা ফিড, ম্যালওয়্যার বিশ্লেষণ ইত্যাদির জন্য), এই নির্দেশাবলী প্রযোজ্য নাও হতে পারে।

ফাইলের লোকেশন এবং সেটির সঠিক ব্যবহারের ব্যাপ্তি

robots.txt ফাইলকে যথাযথ প্রোটোকল ও পোর্ট নম্বরের মাধ্যমে অ্যাক্সেস করা যায় এমন হোস্টের টপ-লেভেল ডিরেক্টরিতে অবশ্যই রাখতে হবে। robots.txt ফাইলের জন্য সাধারণভাবে মনোনীত প্রোটোকলগুলির সবকটিই ইউআরএল-নির্ভর হয়ে থাকে এবং বিশেষ করে Google Search-এর জন্য (যেমন, ওয়েবসাইটে ক্রল করার সময়) সেগুলি হয় "http" এবং "https"। http এবং https-এর ক্ষেত্রে, robots.txt ফাইলকে HTTP নন-কন্ডিশনাল GET অনুরোধের মাধ্যমে ফেচ করা হয়ে থাকে।

শুধুমাত্র Google-এর জন্য প্রযোজ্য: এছাড়াও, Google FTP সাইটের ক্ষেত্রে, robots.txt ফাইল গ্রহণ করে ও মেনে চলে। FTP ভিত্তিক robots.txt ফাইল FTP প্রোটোকলের মাধ্যমে ছদ্মবেশী লগ-ইন ব্যবহার করে অ্যাক্সেস করা হয়।

robots.txt ফাইলে উল্লেখ করা নির্দেশ ফাইল যেখানে হোস্ট করা হয়েছে শুধু সেই হোস্ট, প্রোটোকল এবং পোর্ট নম্বরের ক্ষেত্রে প্রযোজ্য হয়।

সঠিক robots.txt ইউআরএলের উদাহরণ

Robots.txt ইউআরএলের উদাহরণ
http://example.com/robots.txt এইসব ক্ষেত্রে ব্যবহারযোগ্য:
  • http://example.com/
  • http://example.com/folder/file
এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

এইসব ক্ষেত্রে ব্যবহারযোগ্য: http://www.example.com/

এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt এটি ব্যবহারযোগ্য robots.txt ফাইল নয়। ক্রলার সাবডিরেক্টরিতে গিয়ে robots.txt ফাইল চেক করে না।
http://www.müller.eu/robots.txt এইসব ক্ষেত্রে ব্যবহারযোগ্য:
  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়: http://www.muller.eu/

ftp://example.com/robots.txt

এইসব ক্ষেত্রে ব্যবহারযোগ্য: ftp://example.com/

এই ক্ষেত্রে ব্যবহার করা যায় না: http://example.com/

শুধুমাত্র Google-এর জন্য প্রযোজ্য: FTP রিসোর্সের জন্য আমরা robots.txt ফাইল ব্যবহার করে থাকি।

http://212.96.82.21/robots.txt

এইসব ক্ষেত্রে ব্যবহারযোগ্য: http://212.96.82.21/

এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়: http://example.com/ (এমনকি, যদি 212.96.82.21-তে হোস্ট করা থাকে তবুও)

http://example.com:80/robots.txt

এইসব ক্ষেত্রে ব্যবহারযোগ্য:

  • http://example.com:80/
  • http://example.com/

এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়: http://example.com:81/

http://example.com:8181/robots.txt

এইসব ক্ষেত্রে ব্যবহারযোগ্য: http://example.com:8181/

এইসব ক্ষেত্রে ব্যবহারযোগ্য নয়: http://example.com/

HTTP ফলাফলের কোড ব্যবহার করা

সাধারণত, robots.txt ফাইল ফেচ করা হলে তিন ধরনের ফলাফল হতে পারে:

  • সম্পূর্ণ অনুমতি: সব কন্টেন্ট ক্রল করা যেতে পারে।
  • কোনও অনুমতি নেই: কোনও কন্টেন্ট ক্রল করা যাবে না।
  • শর্তাধীন অনুমতি: কোনও বিশেষ কন্টেন্ট ক্রল করা যাবে কিনা, তা robots.txt ফাইলের নির্দেশ নির্ধারণ করে দেয়।
HTTP ফলাফলের কোড ব্যবহার করা
2xx (সফল হয়েছে) "শর্তাধীন অনুমতি" অনুযায়ী যে ক্রল করা হয়েছে তা এই HTTP ফলাফলের কোডের মাধ্যমে জানানো হয়।
3xx (রিডাইরেক্ট করার কাজ) যেমন HTTP/1.0-এর জন্য RFC 1945 করে থাকে, Google অন্তত পাঁচটি রিডাইরেক্ট হপ ফলো করে থাকে এবং তারপরে এটিকে বন্ধ করে দিয়ে 404 হিসেবে ধরে নেয়। অননুমোদিত ইউআরএলে robots.txt রিডাইরেক্ট পরিচালনা করাকে এখানে সাজেস্ট করা হয় না, যেহেতু এখনও কোনও নিয়ম নির্ধারণ করা হয়নি, তাই কমপক্ষে পাঁচটি হপ পর্যন্ত রিডাইরেক্টগুলি ফলো করা হয় এবং যদি কোনও robots.txt তখনও না পাওয়া যায়, Google সেটিকে robots.txt-এর জন্য 404 বলেই ধরে নেয়। 2xx (ফ্রেম, জাভাস্ক্রিপ্ট অথবা মেটা রিফ্রেশ-ধরনের রিডাইরেক্ট) প্রতিক্রিয়া পাঠানো কোনও HTML কন্টেন্টের উপর নির্ভর করে, robots.txt ফাইলের জন্য যুক্তিসম্মত রিডাইরেক্ট পরিচালনা করার সাজেশন আমরা দিই না এবং প্রযোজ্য নিয়মগুলি খোঁজার জন্য প্রথম পৃষ্ঠায় থাকা কন্টেন্টই ব্যবহার করা হয়।
4xx (ক্লায়েন্ট সংক্রান্ত সমস্যা) 4xx কোডের যাবতীয় সমস্যাকে একইভাবে দেখা হয় এবং কোনও উপযুক্ত robots.txt ফাইল নেই বলেই ধরে নেওয়া হয়। কোনও বিধিনিষেধ নেই বলেই ধরে নেওয়া হয়। এগুলিকে ক্রল করার "সম্পূর্ণ অনুমতি" আছে বলে বিবেচনা করা হয়।
5xx (সার্ভার সংক্রান্ত সমস্যা)

সার্ভার সংক্রান্ত কোনও সমস্যা সাময়িক বলে ধরে নেওয়া হয় এবং এর ফলে ক্রল করার "কোনও অনুমতি থাকে না"। সার্ভার ছাড়া অন্য কোনও সমস্যার জন্য HTTP ফলাফলের কোড না পাওয়া পর্যন্ত অনুরোধ করা চালানো হতে থাকে। একটি 503 (এটির পরিষেবা পাওয়া যায় না) সমস্যার জন্য বেশ ঘন ঘন অনুরোধ করা হয়। যদি robots.txt ফাইলটি ৩০ দিনের বেশি সময় ধরে পাওয়া না যায়, robots.txt ফাইলের শেষ ক্যাশে কপিটি ব্যবহার করা হয়। যদি তাও পাওয়া না যায়, Google তখন ধরে নেয় যে সেখানে আর কোনও ক্রলিং-সংক্রান্ত বিধিনিষেধ নেই। সাময়িকভাবে ক্রলিং বন্ধ করতে, আমরা HTTP ফলাফলের 503 কোড দেখানোর জন্য সাজেস্ট করি।

শুধুমাত্র Google-এর ক্ষেত্রে প্রযোজ্য: কোনও সাইট ভুল করে কনফিগার করার ফলে, একটি অনুপস্থিত পৃষ্ঠার জন্য 404-এর পরিবর্তে 5xx দেখানো হচ্ছে জানতে পারলে, সেই সাইটের 5xx-সংক্রান্ত সমস্যাকে 404 হিসেবেই আমরা বিবেচনা করব।

প্রসেস করা যায়নি এমন অনুরোধ অথবা অসম্পূর্ণ ডেটা টাইম-আউট, ভুল প্রতিক্রিয়া, কানেকশন রিসেট হওয়া বা সংযোগবিচ্ছিন্ন হওয়া এবং HTTP চাঙ্কিংয়ের মতো ডিএনএস অথবা নেটওয়ার্ক-সংক্রান্ত কোনও সমস্যার জন্য, robots.txt ফাইল ফেচ করা না গেলে, সেইসব বিষয়গুলিকে সার্ভার সংক্রান্ত সমস্যা বলে ধরে নেওয়া হয়।
ক্যাশিং robots.txt ফাইলের কন্টেন্ট সাধারণত ২৪ ঘণ্টা পর্যন্ত ক্যাশেতে থাকে। কিন্তু ক্যাশে করা ভার্সন রিফ্রেশ করা না গেলে, (যেমন টাইম-আউট বা 5xx-সংক্রান্ত সমস্যার ক্ষেত্রে), এটিকে আরও বেশি সময়ের জন্য ক্যাশেতে রাখা হতে পারে। ক্যাশে করা প্রতিক্রিয়াটি একাধিক ক্রলার শেয়ার করতে পারে। max-age Cache-Control HTTP হেডারের উপর নির্ভর করে Google ক্যাশের সময়সীমা কমাতে বা বাড়াতে পারে।

ফাইল ফর্ম্যাট

UTF-8-এ এনকোড করা প্লেন টেক্সট ফর্ম্যাটের ফাইল ব্যবহার করা উচিত। এই ফাইলে CR, CR/LF অথবা LF দিয়ে বিভিন্ন রেকর্ড (লাইন) আলাদা করা থাকে।

শুধুমাত্র ব্যবহারযোগ্য লাইনগুলি ছাড়া অন্যান্য সমস্ত কন্টেন্টকে বাদ দেওয়া হয়। যেমন, প্রাপ্ত ডকুমেন্ট একটি HTML পৃষ্ঠা হলে, শুধু সঠিক টেক্সটের লাইনগুলি শুধুমাত্র গ্রাহ্য করা হয়, বাকি সবকিছুকে কোনও সতর্কতা বা সমস্যার মেসেজ না দেখিয়েই, বাদ দেওয়া হয়।

অক্ষর দিয়ে এনকোডিং করা থাকলে এবং তার ফলে UTF-8 এর সাবসেট নয় এমন অক্ষর সেখানে ব্যবহার করা হলে, ফাইলের কন্টেন্ট ভুলভাবে পার্স করার সম্ভাবনা থেকে যেতে পারে।

robots.txt ফাইলের শুরুতে, কোনও ঐচ্ছিক ইউনিকোড BOM (বাইট অর্ডার মার্ক) ব্যবহার করা হলে, সেটিকে তখন বাদ দেওয়া হয়।

প্রতিটি সঠিক লাইনে একটি করে ফিল্ড, কোলন এবং মান থাকে। স্পেস না দিলেও এখানে চলে (তবে স্পেস দিলে সহজে পড়তে পারা যায়)। ফাইলের যেকোনও লোকেশনে "#" অক্ষর ব্যবহার করে কমেন্ট যোগ করা যেতে পারে; কোনও কমেন্টের শুরু থেকে লাইন শেষ হওয়া পর্যন্ত লেখা সম্পূর্ণ কন্টেন্টকে কমেন্ট হিসেবে বিবেচনা করে সেটিকে তখন বাদ দেওয়া হয়। সাধারণ ফর্ম্যাট হল <field>:<value><#optional-comment>। লাইনের শুরুতে এবং শেষে হোয়াইটস্পেস থাকলে, কোনও সমস্যা হয় না।

<field> এলিমেন্টটির ক্ষেত্রে ছোট ও বড় হাতের অক্ষরের পার্থক্য দেখা যায়। একটি <field> এলিমেন্টের উপর নির্ভর করে, <value> এলিমেন্টে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হতে পারে।

কোনও সাধারণ সমস্যা বা টাইপিং-সংক্রান্ত সমস্যা থাকা (ধরা যাক, "ইউজার-এজেন্ট"-এর বদলে "ইউজারএজেন্ট" লেখা হয়েছে), এমন কোনও <field> এলিমেন্টের পরিচালনাকে সাপোর্ট করা হয় না।

প্রতিটি ক্রলারের জন্য ফাইলের সর্বাধিক একটি নির্দিষ্ট সাইজ লাগু করা হতে পারে। সর্বাধিক ফাইল সাইজের চেয়ে বেশি সাইজের কন্টেন্টকে বাদ দেওয়া হতে পারে। Google সম্প্রতি একটি সাইজের সীমা নির্দিষ্ট করেছে, যা ৫০০ কিবিবাইট (KiB)-এর মধ্যে থাকতে হবে। robots.txt ফাইলের সাইজ কম করার জন্য, সামগ্রিক নির্দেশাবলী প্রয়োগ করা হয়েছে, যা আসলে বেশি সাইজের robots.txt ফাইলের উপর কাজ করবে। উদাহরণস্বরূপ, কোনও একটি পৃথক ডিরেক্টরিতে কোনও নির্দিষ্ট প্লেসে ম্যাটেরিয়াল অন্তর্ভুক্ত করা নেই।

ফর্মাল সিন্ট্যাক্স / সংজ্ঞা

RFC 5234-তে যেমন ভাবে বর্ণনা করা হয়েছে, তেমন ভাবে এখানে একটি Augmented Backus-Naur Form (ABNF)-এর বিবরণ দেওয়া হল

robotstxt = *(group / emptyline)
group = startgroupline                    ; We start with a user-agent
        *(startgroupline / emptyline)     ; ... and possibly more user-agents
        *(rule / emptyline)               ; followed by rules relevant for UAs

startgroupline = *WS "user-agent" *WS ":" *WS product-token EOL

rule = *WS ("allow" / "disallow") *WS ":" *WS (path-pattern / empty-pattern) EOL

; parser implementors: add additional lines you need (for example, Sitemaps), and
; be lenient when reading lines that don’t conform. Apply Postel’s law.

product-token = identifier / "*"
path-pattern = "/" *(UTF8-char-noctl)    ; valid URI path pattern; see 3.2.2
empty-pattern = *WS

identifier = 1*(%x2d / %x41-5a / %x5f / %x61-7a)
comment = "#" *(UTF8-char-noctl / WS / "#")
emptyline = EOL
EOL = *WS [comment] NL         ; end-of-line may have optional trailing comment
NL = %x0D / %x0A / %x0D.0A
WS = %x20 / %x09

; UTF8 derived from RFC3629, but excluding control characters
UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1-noctl    = %x21 / %x22 / %x24-7F  ; excluding control, space, '#'
UTF8-2          = %xC2-DF UTF8-tail
UTF8-3          = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
                  %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4          = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
                  %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail       = %x80-BF

লাইন ও রুলগুলিকে একসাথে গ্রুপ করা

এক বা একাধিক ইউজার-এজেন্টের লাইন, যেটি এক বা একাধিক নিয়মের মাধ্যমে পরিচালিত হয়। এই গ্রুপটি একটি ইউজার-এজেন্টের লাইন বা একটি ফাইলের শেষে সমাপ্ত হয়েছে। শেষ গ্রুপটির হয়ত কোনও নিজস্ব নিয়ম নাও থাকতে পারে, যার অর্থ হল এটি সমস্ত কিছুকে সম্পূর্ণভাবে ব্যবহার করার অনুমতি দেয়।

গ্রুপের উদাহরণ:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

user-agent: h

এখানে নির্দিষ্ট চারটি গ্রুপ উল্লেখ করা আছে:

  • "ক"-এর জন্য একটি গ্রুপ
  • "খ"-এর জন্য একটি গ্রুপ
  • "ঙ" ও "চ"-এর জন্য আরেকটি গ্রুপ
  • "জ"-এর জন্য একটি গ্রুপ

শেষ গ্রুপ (গ্রুপ "জ") ছাড়া প্রতিটি গ্রুপের নিজস্ব গ্রুপ-মেম্বার লাইন আছে। শেষ গ্রুপে (গ্রুপ "জ") কিছু নেই। যাতে সহজে পড়া যায় সেই জন্য কীভাবে হোয়াইটস্পেস ও ফাঁকা লাইন (এগুলির ব্যবহার বাধ্যতামূলক নয়) ব্যবহার করা হয়েছে সেটি লক্ষ্য করুন।

ইউজার-এজেন্টের অগ্রাধিকারের ক্রম

একটি নির্দিষ্ট ক্রলারের জন্য শুধুমাত্র একটি গ্রুপই গ্রাহ্য হবে। কোন গ্রুপে সবচেয়ে বেশি সংখ্যক নির্দিষ্ট ইউজার-এজেন্ট আছে, যেগুলি একে অপরের সাথে ম্যাচ করছে, তার উপর নির্ভর করে ক্রলারকে সঠিক লাইনের গ্রুপটি খুঁজে বার করতে হয়। অন্যান্য সমস্ত গ্রুপকে ক্রলার বাদ দিয়ে দেয়। ইউজার-এজেন্টের কাজ করার সময় ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয়। সমস্ত না-মেলা টেক্সটগুলিকে বাদ দেওয়া হয় (যেমন, googlebot/1.2 এবং googlebot* উভয়েই googlebot-এর সমতুল্য)। robots.txt ফাইলের মধ্যে গ্রুপগুলির অর্ডার কোনও বিশেষ অর্থ বহন করে না।

যদি কোনও একটি নির্দিষ্ট ইউজার-এজেন্টের জন্য একাধিক গ্রুপ ঘোষণা করা হলে, সেই গ্রুপগুলির সমস্ত নিয়মাবলী সেই নির্দিষ্ট ইউজার-এজেন্টের উপরে একত্রিত ভাবে প্রযোজ্য হয়ে থাকে।

যেমন

নমুনা ১

এই robots.txt ফাইল দেখুন:

      user-agent: googlebot-news
      (group 1)

      user-agent: *
      (group 2)

      user-agent: googlebot
      (group 3)
    

ক্রলারগুলি এইভাবে প্রাসঙ্গিক গ্রুপটি খুঁজে নেয়:

প্রতিটি ক্রলার যেসব গ্রুপকে ফলো করে
Googlebot News যে গ্ৰুপকে অনুসরণ করা হয় সেটি ১ নম্বর। শুধু সবচেয়ে নির্দিষ্ট গ্রুপটিকে অনুসরণ করা হয়, বাকি সবগুলিকে উপেক্ষা করা হয়।
Googlebot (ওয়েব) গ্ৰুপ হিসেবে ৩ নম্বর গ্রুপ অনুসরণ করা হয়।
Googlebot ছবি গ্ৰুপ হিসেবে ৩ নম্বর গ্রুপ অনুসরণ করা হয়। googlebot-images-এর কোনও নির্দিষ্ট গ্রুপ নেই, তাই আরও সাধারণ কোনও গ্রুপকে ফলো করা হবে।
Googlebot News (ছবি ক্রল করার সময়) >১ নম্বর গ্রুপকে এই গ্রুপটি ফলো করে। Googlebot News নিজের জন্যই এই ছবিগুলি ক্রল করে থাকে, তাই শুধুমাত্র Googlebot News গ্রুপকে এটি ফলো করে।
Otherbot (ওয়েব) যে গ্ৰুপকে অনুসরণ করা হয় সেটি ২ নম্বর।
Otherbot (নিউজ) যে গ্ৰুপকে অনুসরণ করা হয় সেটি ২ নম্বর। কোনও সম্পর্কিত ক্রলারের জন্য এন্ট্রি থাকলেও, সেটি সম্পূর্ণ মিললে তবেই সঠিক বলে ধরে নেওয়া হয়।

নমুনা ২

এই robots.txt ফাইল দেখুন:

      user-agent: googlebot-news
      disallow: /fish

      user-agent: *
      disallow: /carrots

      user-agent: googlebot-news
      disallow: /shrimp
    

ক্রলারগুলি এইভাবে নির্দিষ্ট ইউজার এজেন্টের সাথে প্রাসঙ্গিক গ্রুপকে মিলিয়ে নেয়:

      user-agent: googlebot-news
      disallow: /fish
      disallow: /shrimp

      user-agent: *
      disallow: /carrots
    

এছাড়া, Google-এর ক্রলার এবং ইউজার-এজেন্ট স্ট্রিং নিবন্ধটিও পড়ুন।

গ্রুপ মেম্বারদের জন্য নিয়মাবলী

গ্রুপ-মেম্বারদের জন্য পালনীয় স্ট্যান্ডার্ড নিয়মাবলীর ব্যাপারেই শুধুমাত্র এই বিভাগে বর্ণনা করা হয়েছে। এই নিয়মগুলিকে ক্রলারদের কাজের "নির্দেশিকা" হিসেবেও বর্ণনা করা হয়ে থাকে। এই সমস্ত নির্দেশিকাগুলিকে directive: [path]-এর মানের জন্য নির্দিষ্ট করা হয়েছে, যেখানে [path]-এর মান হল ঐচ্ছিক। সাধারণভাবে, নির্দিষ্ট ক্রলারের জন্য ক্রলিংয়ের ক্ষেত্রে, কোনও বিধিনিষেধ আরোপ করা হয় না। একটি [path] ছাড়া কোনও নির্দেশিকাকে বাদ দেওয়া হয়।

উল্লেখ করা থাকলে, [path]-এর মানটিকে, যে ওয়েবসাইটের রুটের জন্য robots.txt ফাইলকে একই প্রোটোকল, পোর্ট নম্বর, হোস্ট ও ডোমেন নেম ব্যবহার করে ফেচ করা হয়েছে, সেটির আপেক্ষিক হিসেবে বিবেচনা করতে হয়। রুট বোঝাতে, পাথের মানের শুরুতে "/" লিখতে হয়। পাথের ক্ষেত্রে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয়। নিচে উল্লিখিত "পাথের মানের উপর নির্ভর করে ইউআরএল মেলানো" বিভাগ থেকে এই বিষয়ে আরও জানতে পারবেন।

অননুমোদন করুন

নির্দিষ্ট ক্রলারগুলি কোন পাথ অ্যাক্সেস করবে না, তা নির্দেশ করে দিতে disallow-এর নির্দেশিকা ব্যবহার করা হয়। কোনও পাথ উল্লেখ করা না থাকলে, সেই নির্দেশকে তখন মানা হয় না।

ব্যবহার:

disallow: [path]

অনুমোদন করুন

নির্দিষ্ট ক্রলার কোন পাথ অ্যাক্সেস করতে পারে, তা নির্দেশ করে দিতে allow-এর নির্দেশিকা ব্যবহার করা হয়। কোনও পাথ উল্লেখ করা না থাকলে, সেই নির্দেশ তখন মানা হয় না।

ব্যবহার:

allow: [path]

পাথের মানের উপর নির্ভর করে ইউআরএল মেলানোর কাজ

সাইটের কোনও একটি নির্দিষ্ট ইউআরএলে কোনও নিয়ম প্রযোজ্য হবে কিনা তা নির্ধারণ করতে, পাথের মান ব্যবহার করা হয়। ওয়াইল্ডকার্ড ছাড়া, সাধারণত পাথের মানের সাহায্যে কোনও ইউআরএলের শুরুর অংশটি (এবং একই পাথ দিয়ে শুরু হয় এমন যেকোনও সঠিক ইউআরএল) মেলানো হয়। পাথের ৭ বিট নয় এমন ASCII অক্ষরগুলিকে RFC 3986 অনুযায়ী লেখা UTF-8 অথবা পার্সেন্ট-এসকেপড UTF-8-এ এনকোড করা অক্ষর হিসেবে অন্তর্ভুক্ত করা যেতে পারে।

Google, Bing সহ অন্যান্য মুখ্য সার্চ ইঞ্জিনগুলিতে পাথের মান হিসেবে সীমিত সংখ্যক "ওয়াইল্ডকার্ড" ব্যবহার করা যায়। এখানে সেগুলি উল্লেখ করা হল:

  • যেকোনও সঠিক অক্ষরের ০ অথবা তার চেয়ে বেশি ইনস্ট্যান্স বোঝাতে * ব্যবহার করা যায়।
  • ইউআরএলের শেষ কোথায় বোঝাতে $টি ব্যবহার করা হয়।
পাথ ম্যাচিং করার উদাহরণ
/ রুট ও তার নিচের লেভেলের যেকোনও ইউআরএলের সাথে মেলানো হয়
/* /-এর সমতুল্য। শেষে থাকা ওয়াইল্ডকার্ডটিকে ধরা হয় না।
/fish

মিলে যাচ্ছে:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

মিলছে না:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish*

/fish-এর সমতুল্য। শেষে থাকা ওয়াইল্ডকার্ডটিকে ধরা হয় না।

মিলে যাচ্ছে:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

মিলছে না:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish/

শেষের স্ল্যাশ চিহ্নটি থেকে বোঝা যায় যে এই ফোল্ডারের সবকিছুর সাথে এটি মেলে।

মিলে যাচ্ছে:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

মিলছে না:

  • /fish
  • /fish.html
  • /Fish/Salmon.asp
/*.php

মিলে যাচ্ছে:

  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

মিলছে না:

  • / (এটি /index.php-তে ম্যাপ করা থাকলেও)
  • /windows.PHP
/*.php$

মিলে যাচ্ছে:

  • /filename.php
  • /folder/filename.php

মিলছে না:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

মিলে যাচ্ছে:

  • /fish.php
  • /fishheads/catfish.php?parameters

মিলছে না: /Fish.PHP

Google-এ ব্যবহার করা যায় এমন নন-গ্রুপ মেম্বারের লাইন

sitemaps.org লিঙ্কের সংজ্ঞানুযায়ী Google, Bing সহ অন্যান্য মুখ্য সার্চ ইঞ্জিনগুলিতে sitemap কাজ করে।

ব্যবহার:

sitemap: [absoluteURL]

[absoluteURL] একটি সাইটম্যাপ, সাইটম্যাপ ইনডেক্স ফাইল অথবা সমতুল্য ইউআরএলকে পয়েন্ট করে দেখায়। ইউআরএলকে robots.txt ফাইলে একই হোস্টের মধ্যে থাকতেই হবে এমন কোনও বাধ্যবাধকতা নেই। একাধিক sitemap এন্ট্রি থাকতে পারে। নন-গ্রুপ-মেম্বার লাইন হিসেবে এগুলি কোনও নির্দিষ্ট ইউজার-এজেন্টের সাথে সম্পর্কিত নয় এবং অননুমোদিত না হলে, সমস্ত ক্রলার এগুলি ফলো করতে পারে।

গ্রুপ-মেম্বার লাইনের অগ্রাধিকারের ক্রম

গ্রুপ-মেম্বার লেভেলে, বিশেষ করে allow এবং disallow নির্দেশাবলীর ক্ষেত্রে, [path]-এর এন্ট্রির দৈর্ঘ্যের উপর নির্ভর করে, অপেক্ষাকৃত কম নির্দিষ্ট (ছোট) নিয়মের পরিবর্তে বেশি নির্দিষ্ট নিয়মকে অগ্রাধিকার দেওয়া হয়। পরস্পরবিরোধী নিয়ম, যেগুলির মধ্যে ওয়াইল্ডকার্ডের সাথে সম্পর্কিত বিষয়গুলি অন্তর্ভুক্ত থাকে, সেইসব ক্ষেত্রে সবচেয়ে কম বিধিনিষেধযুক্ত নিয়মটি প্রয়োগ করা হয়।

বিভিন্ন ধরনের পরিস্থিতির উদাহরণ
http://example.com/page

allow: /p

disallow: /

সিদ্ধান্ত: allow

http://example.com/folder/page

allow: /folder

disallow: /folder

সিদ্ধান্ত: allow

http://example.com/page.htm

allow: /page

disallow: /*.htm

সিদ্ধান্ত: undefined

http://example.com/

allow: /$

disallow: /

সিদ্ধান্ত: allow

http://example.com/page.htm

allow: /$

disallow: /

সিদ্ধান্ত: disallow

robots.txt মার্কআপ টেস্ট করা হচ্ছে

robots.txt মার্কআপ টেস্ট করার জন্য Google দুটি বিকল্প অফার করে:

  1. Search Console-এ robots.txt টেস্টার
  2. Google-এর ওপেন সোর্স robots.txt লাইব্রেরি, যেটি Google Search-এর ক্ষেত্রেও ব্যবহার করা হয়।