ব্লগে ফিরে যান
৩ অক্টোবর, ২০২৫Sergei Solod4 মিনিট পড়া

Yandex আমার ব্লগ /en ছাড়া crawl করেছিল; 308 redirect 404 ঠেকিয়েছে

sitemap-এ প্রায় 3,000টি /en/blog/... পেজ যোগ করার পর দেখি Yandex সংশ্লিষ্ট /blog/... path crawl করার চেষ্টা করছে। আগে থেকেই থাকা 308 redirect request-গুলোকে 404-এ শেষ হতে দেয়নি। আসল শিক্ষা ছিল না যে Yandex sitemap “ভেঙে দিয়েছে”; বরং পরিষ্কার redirect layer URL architecture-কে কতটা resilient করতে পারে।

SEOYandexSitemap308 RedirectTechnical SEOCrawling

আমি /en/blog/... স্ট্রাকচারে প্রায় 3,000টি নতুন পেজসহ sitemap update deploy করেছিলাম। কিছুক্ষণ পর Yandex Webmaster-এ অপ্রত্যাশিত একটি pattern দেখি: Yandex /en prefix ছাড়া সংশ্লিষ্ট /blog/... path crawl করার চেষ্টা করছিল।

এই URL-গুলো যদি সরাসরি 404 দিত, তাহলে হাজার হাজার অপ্রয়োজনীয় crawl attempt অস্তিত্বহীন path-এ যেতে পারত। সৌভাগ্যক্রমে language prefix ছাড়া route থেকে সঠিক English URL-এ যাওয়ার permanent 308 redirect আগে থেকেই সেট করা ছিল।

এই ছোট defensive routing layer আমার ধারণার চেয়ে অনেক বেশি কাজে দিয়েছে।

আমি আসলে কী দেখেছিলাম

  1. আমি প্রায় 3,000টি নতুন /en/blog/... পেজসহ sitemap প্রকাশ করি।
  2. এরপর Yandex Webmaster দেখায় যে Yandex corresponding /blog/... URL crawl করার চেষ্টা করছে।
  3. এই alternate path-গুলো আগে থেকেই 308 redirect-এর আওতায় ছিল।
  4. ফলে request 404-এ না গিয়ে intended /en/blog/... URL-এ পৌঁছায়।

আমার প্রথম বর্ণনায় একটি গুরুত্বপূর্ণ correction দরকার: Yandex “sitemap ভুল parse করেছে” — এটা আমি প্রমাণ করতে পারি না। Sitemap update-এর পর unexpected path দেখেছি, কিন্তু শুধু timing internal cause প্রমাণ করে না। Search engine বিভিন্ন signal ও historical source থেকে URL discover করতে পারে। শক্ত প্রমাণ ছাড়া নির্ভুলভাবে শুধু এটুকুই বলা যায়: Yandex এমন path crawl করেছিল যা আমি আশা করিনি।

এই পার্থক্য গুরুত্বপূর্ণ। Crawler-এর অদ্ভুত URL request করা একটি observation; কেন সে ওই URL বেছে নিল, সেটা আলাদা claim।

308 redirect কেন কাজে দিয়েছিল

আমার redirect logic ছোট path-কে localized URL-এর permanent alias হিসেবে ধরত:

/blog/example-post  -> 308 ->  /en/blog/example-post

তাই crawler unexpected URL দিয়ে এলেও শেষ পর্যন্ত আমি যে page serve করতে চাই সেটাতেই পৌঁছাত।

308 Permanent Redirect একটি permanent HTTP redirect, যা request method এবং body preserve করে। সাধারণ crawler GET request-এ method preservation মূল বিষয় নয়; আমার ক্ষেত্রে গুরুত্বপূর্ণ ছিল redirect-টি explicitly permanent। Yandex Webmaster-এর বর্তমান documentation 301 এবং 308 উভয়কেই permanent redirect হিসেবে classify করে।

redirect সম্পর্কে Yandex Webmaster-এর অফিসিয়াল documentation.

এর মানে এই নয় যে SEO-র জন্য 308 সবসময় 301-এর চেয়ে ভালো। আমার 308 আগে থেকেই ছিল এবং প্রয়োজনীয় কাজটি করেছে: unexpected URL dead end হয়নি।

Redirect হলো safety net, sitemap fix নয়

Redirect সমস্যা সামলেছে, কিন্তু extra crawling-কে desirable করেনি। প্রতিটি unnecessary redirect একটি অতিরিক্ত request এবং hop। খুব broad rule URL generation-এর bug-ও আড়াল করতে পারে যদি ভুল URL-এর source খোঁজা বন্ধ করা হয়।

Sitemap-এ যদি outdated বা redirecting URL থাকে, সঠিক fix হলো sitemap ঠিক করা এবং final URL ব্যবহার করা। Redirect পুরোনো, alternate বা accidentally discovered path সামলাবে; sloppy URL data justify করবে না।

আমার ক্ষেত্রে sitemap আগে থেকেই /en/blog/... ব্যবহার করছিল। Redirect শুধু crawler /blog/... দিয়ে এলে site-কে বেশি tolerant করেছে।

এখন এমন ঘটনা হলে আমি কী যাচাই করি

  1. Deploy হওয়া sitemap নিজে খুলি। শুধু generator code নয়, final file এবং কয়েকটি real URL দেখি।
  2. Final response check করি। Index করার URL ideally অপ্রয়োজনীয় redirect chain ছাড়া সরাসরি target page-এ যাবে।
  3. Predictable alternate path test করি। Old বা prefix-less URL-এর permanent destination থাকলে mapping explicit এবং one-to-one হওয়া উচিত।
  4. Redirect chain এড়াই। A -> B -> C বোঝা A -> C-এর চেয়ে কঠিন।
  5. সম্ভব হলে crawler report server-side evidence-এর সঙ্গে মিলাই। Webmaster tool useful, কিন্তু URL প্রথম কোথা থেকে discover হয়েছে সবসময় বলে না।
  6. Crawling থেকে ranking infer করি না। Crawling, indexing, ranking এবং traffic আলাদা ধাপ।
curl -I https://example.com/blog/example-post

HTTP/2 308
location: https://example.com/en/blog/example-post

এটি illustrative example। মূল কথা exact status এবং destination verify করা, rule কাজ করছে ধরে নেওয়া নয়।

আমি কী বলতে পারি, আর কী পারি না

আমি confirm করতে পারি যে existing 308 redirect unexpected /blog/... request-কে 404-এ শেষ হতে দেয়নি এবং intended URL-এ পাঠিয়েছে।

আমি confirm করতে পারি না যে Yandex-এর sitemap parser কারণ ছিল। Ranking gain, indexing gain বা নির্দিষ্ট পরিমাণ “saved” traffic-ও আমি measure করিনি। তা দাবি করা evidence-এর বাইরে যাওয়া হবে।

আমার কাছে lesson আরও narrow কিন্তু বেশি useful: URL architecture-এর system boundary-তে predictable mistake tolerate করা উচিত। Clean sitemap প্রথম defense line। Precise permanent redirect layer দ্বিতীয়।

দুটো থাকলে unexpected crawler path হাজার হাজার dead URL-এ পরিণত হওয়ার সম্ভাবনা অনেক কমে যায়।