অনলাইনে যারা একই সঙ্গে ইংরেজি এবং বাংলা কন্টেন্ট নিয়ে কাজ করেন, তাদের জন্য টেকনিক্যাল এসইও (SEO)-র একটি অত্যন্ত গুরুত্বপূর্ণ বিষয় হলো সাইটের গঠন সঠিকভাবে সাজানো। ইংরেজি এবং বাংলা কন্টেন্টের মধ্যে ভারসাম্য বজায় রাখার একটি সাধারণ এবং অত্যন্ত কার্যকরী উপায় হলো ভাষা দুটিকে কাঠামোগতভাবে আলাদা করে ফেলা। এর মানে সাধারণত মূল ইংরেজি সংস্করণটিকে মেইন ডোমেনে রাখা এবং বাংলা সংস্করণটির জন্য একটি নির্দিষ্ট সাব-ডোমেন তৈরি করা। কিন্তু কোনো কারণে যদি এই স্ট্রাকচার পরিবর্তন করেন এবং সেটা যদি নিখুঁতভাবে করা না হয়, তখন ট্রাফিক হারানোর পাশাপাশি সাইট ইনডেক্স না হওয়ার মতো বড় জটিলতায় পড়তে পারেন।
সম্প্রতি আমি আমার নিজের একটি ওয়েবসাইটে এই ল্যাঙ্গুয়েজ মাইগ্রেশনের সিদ্ধান্ত দিয়েছিলাম। আমাদের টেকনিক্যাল টিম ভালোভাবেই কাজটি সম্পন্ন করেছিল। কিন্তু এরপর দীর্ঘ ৩ মাস ধরে আমি লক্ষ করছিলাম যে অ্যানালিটিক্সে কোনো রিডার বা আশানুরূপ ট্রাফিক পাচ্ছিলাম না এবং সেখানে প্রচুর আর্টিকেলের ক্ষেত্রে ‘Not Found’ এরর দেখাচ্ছিল।
বিষয়টি ইনভেস্টিগেট করতে গুগল সার্চ কনসোলে (Google Search Console) গিয়ে অবাক হলাম! ইংরেজি বা মূল সাইটের কিছু আর্টিকেল ইনডেক্স হলেও, নতুন করে তৈরি করা বাংলা সাব-ডোমেনে প্রায় কোনো আর্টিকেলই ইনডেক্স হয়নি। পাঠকরা মূলত পুরাতন আর্টিকেলের ইউআরএল স্ট্রাকচার ধরে মূল সাইটে আসছিলেন এবং কনটেন্ট না পেয়ে যথারীতি বাউন্স করে ফিরে যাচ্ছিলেন। আমার যে সমস্ত সাইটের ভাষা পরিবর্তন করে সাব-ডোমেনে স্থানান্তরিত করেছিলাম, সেগুলোর প্রতিটিতেই ঠিক একই রকম ঘটনা ঘটছিল।
সমস্যাটি সমাধান করার পর আমার মনে হলো এটি অনলাইনে লিখে রাখা দরকার, যেন আমার মতো এমন ঝামেলায় যারা পড়বেন তারা খুব সহজে সমাধানটি করে নিতে পারেন।
মাইগ্রেশনের অসাবধানতা এবং তার খেসারত
আমার সাইটের শুরুর দিকের সেটআপটি ছিল এমন:
economicsgoln.com ছিল সাইটের প্রাইমারি বা মেইন ডোমেন, যার ভাষা ছিল সম্পূর্ণ বাংলা। en.economicsgoln.com ছিল একটি সাব-ডোমেন, যার ভাষা ছিল ইংরেজি। একটি বিশেষ প্রয়োজনের কারণে আমাকে এই পুরো কাঠামোটি অদলবদল করার সিদ্ধান্ত নিতে হয়। আমার স্টাফরা ইংরেজি সাব-ডোমেনের (en.economicsgoln.com) সমস্ত কন্টেন্ট মূল মেইন ডোমেন economicsgoln.com-এ নিয়ে আসে এবং মেইন ডোমেনে থাকা আগের সমস্ত বাংলা কন্টেন্ট সম্পূর্ণ নতুন একটি সাব-ডোমেন bn.economicsgoln.com-এ স্থানান্তর করে।
পরিবর্তনের পর দেখা গেল, মেইন ডোমেনে চলে আসা ইংরেজি কন্টেন্টগুলো মোটামুটি ৩ মাসের মধ্যে গুগলে ইনডেক্স হয়ে গেছে। কিন্তু মূল সমস্যা তৈরি হলো বাংলা কন্টেন্টগুলো নিয়ে; নতুন সাব-ডোমেন bn.economicsgoln.com দীর্ঘ তিন মাসেও গুগলে ঠিকমতো ইনডেক্স হচ্ছিল না।
গুগলের সার্চ কনসোল (Google Search Console) চেক করে দেখলাম গুগলের সার্চ ইনডেক্সে তখনও মেইন ডোমেনের সাথে যুক্ত থাকা পুরাতন বাংলা ইউআরএলগুলোই রয়ে গিয়েছিল। ফলস্বরূপ, অর্গানিক সার্চ থেকে আসা বাংলা পাঠকরা সরাসরি মেইন ডোমেনেই ল্যান্ড করছিলেন। কিন্তু মেইন ডোমেনে তখন আর সেই বাংলা পোস্টগুলো না থাকায়, ভিজিটর এবং গুগলের সার্চ বট উভয়েই সেখানে একটি ফাঁকা ‘৪০৪ নট ফাউন্ড’ (404 Not Found) এরর দেখতে পাচ্ছিলেন, যার কারণে সাইটের বাউন্স রেট প্রচুর বেড়ে গিয়েছিল।
এই সাংঘর্ষিক সিগন্যালটি গুগলের ক্রলিং অ্যালগরিদমকে পুরোপুরি বিভ্রান্ত করে ফেলে। আগে যেখানে সুস্থ-স্বাভাবিক ইউআরএল ছিল, সেখানে হঠাৎ একসাথে প্রচুর ৪০৪ এরর দেখে অ্যালগরিদমটি নতুন সাব-ডোমেনের ইনডেক্সিং প্রক্রিয়া পুরোপুরি বন্ধ করে দেয়।
এর একমাত্র স্থায়ী সমাধান ছিল— মেইন ডোমেনের প্রতিটি পুরাতন বাংলা ইউআরএল থেকে নতুন সাব-ডোমেনের ঠিক সেই নির্দিষ্ট ইউআরএল-এ একটি ‘৩০১ পার্মানেন্ট রিডাইরেক্ট’ (301 Permanent Redirect) সেট করা। কিন্তু সাইটে শত শত পুরাতন আর্টিকেল থাকায়, প্রতিটি লিংকের জন্য ম্যানুয়ালি আলাদা আলাদা রিডাইরেক্ট রুল তৈরি করা ছিল একটি অসম্ভব এবং চরম সময়সাপেক্ষ কাজ।
ইউনিকোড ফিল্টারিংয়ের মাধ্যমে একটি স্বয়ংক্রিয় টেকনিক্যাল সমাধান
এই সমস্যার সমাধানের জন্য আমি এক টুকরা পিএইচপি (PHP) স্ক্রিপ্ট বানিয়ে দিলাম, যার মাধ্যমে পুরো প্রক্রিয়াটিকে স্বয়ংক্রিয় করা যায়। লক্ষ্য ছিল খুবই পরিষ্কার: মেইন ডোমেনে থাকা নতুন ইংরেজি ইউআরএলগুলোতে এই স্ক্রিপ্টটি মোটেও হাত দেবে না, কিন্তু যখনই কোনো ভিজিটর বা সার্চ ইঞ্জিনের বট পুরাতন কোনো বাংলা ইউআরএল-এ ক্লিক করবে, কোডটি তাৎক্ষণিকভাবে ভাষা শনাক্ত করে তাকে নতুন সাব-ডোমেনের সঠিক লিংকে পাঠিয়ে দেবে।
এই সমাধানটি মূলত ইউনিকোড ক্যারেক্টার ফিল্টারিংয়ের ওপর ভিত্তি করে কাজ করে। এর উদ্দেশ্য হলো কম্পিউটারের বর্ণমালার নির্দিষ্ট কোড রেঞ্জ ব্যবহার করে ইউআরএল-এর ভেতরের বাংলা লিপি শনাক্ত করা। কোডটি সাইটে আসা ইউআরএলগুলো রিয়েল-টাইমে স্ক্যান করে এবং বাংলা অক্ষর পেলেই কেবল রিডাইরেক্ট সক্রিয় হয়। সবচেয়ে বড় সুবিধা হলো, এটি লিংকের শেষে থাকা যেকোনো ট্র্যাকিং টোকেন বা এএমপি (AMP) প্যারামিটারকেও অক্ষত রাখে; যার ফলে নতুন সাব-ডোমেনে ল্যান্ড করার পর ভিজিটরদের সামনে কোনো লিংক ভেঙে যাওয়ার ভয় থাকে না।
সমাধান বাস্তবায়নের উপায় ১: থিমের functions.php ফাইল ব্যবহার করা
আপনি যদি ওয়ার্ডপ্রেস অ্যাডমিনিস্ট্রেশনে মোটামুটি অভ্যস্ত হন, তবে এই স্বয়ংক্রিয় রিডাইরেক্ট সেটআপটি করার জন্য আমরা কোনো হেভি প্লাগইন ব্যবহার করব না। থিমের ব্যাকএন্ড কোড ব্যবহার করে এটি সবচেয়ে লাইটওয়েট উপায়ে করা সম্ভব।
আপনার প্রধান ইংরেজি সাইটের (economicsgoln.com) ওয়ার্ডপ্রেস ড্যাশবোর্ডে লগইন করুন। এরপর বাঁদিকের মেনু থেকে Appearance > Theme File Editor-এ যান (অথবা সিপ্যানেল/এফটিপি ব্যবহার করে wp-content/themes/your-active-theme/ ডিরেক্টরিতে যান)। সেখানে থাকা functions.php ফাইলের একদম নিচে নিচের কোডটি পেস্ট করে দিন:
/**
* শুধুমাত্র পুরাতন বাংলা ইউআরএলগুলোকে bn.economicsgoln.com-এ ৩০১ রিডাইরেক্ট করার কোড
* মেইন ডোমেনে থাকা ইংরেজি কন্টেন্ট বা পেজগুলো সম্পূর্ণ অপরিবর্তিত থাকবে।
*/
add_action( ‘template_redirect’, function() {
// বর্তমান পেজের ইউআরএল পাথ এবং কুয়েরি স্ট্রিং আলাদা করা হচ্ছে
$request_uri = $_SERVER[‘REQUEST_URI’];
$path = wp_parse_url( $request_uri, PHP_URL_PATH );
$query = wp_parse_url( $request_uri, PHP_URL_QUERY );
// ইউআরএল পাথে বাংলা অক্ষর (Unicode Range: U+0980 to U+09FF) আছে কি না চেক করা হচ্ছে
if ( $path && preg_match(‘/[\x{0980}-\x{09FF}]/u’, urldecode($path)) ) {
// বাংলা অক্ষর পাওয়া গেলে নতুন বাংলা সাব-ডোমেইনের লিংক তৈরি হবে
$destination_url = ‘https://bn.economicsgoln.com’ . $path;
// যদি ইউআরএলের শেষে কোনো ট্র্যাকিং প্যারামিটার থাকে (যেমন: ?amp=1), তাও যুক্ত করা হচ্ছে
if ( $query ) {
$destination_url .= ‘?’ . $query;
}
// ৩০১ পার্মানেন্ট রিডাইরেক্ট (এসইও ভ্যালু ও র্যাংকিং অক্ষত রাখার জন্য)
wp_redirect( $destination_url, 301 );
exit;
}
});
কোডটি যেভাবে কাজ করে:
:
wp_parse_url: এই ফাংশনটি দিয়ে আমরা ব্রাউজারের মূল ইউআরএল (/পোস্টের-নাম/) এবং তার পেছনের ট্র্যাকিং কুয়েরি প্যারামিটারগুলোকে (?amp=1 বা ?fbclid=…) আলাদা করে নিই। এতে সাব-ডোমেনে রিডাইরেক্ট হওয়ার পর লিংক ভেঙে যাওয়ার বা ৪০৪ এরর আসার কোনো সুযোগ থাকে না।
preg_match(‘/[\x{0980}-\x{09FF}]/u’, …): এটি একটি ডিজিটাল ইউনিকোড ফিল্টার। U+0980 থেকে U+09FF হলো কম্পিউটারের ভাষায় বাংলা বর্ণমালার নির্দিষ্ট রেঞ্জ। এর ফলে ইউআরএল-এ বাংলা অক্ষর থাকলেই কেবল কোডটি কাজ শুরু করে, ইংরেজি পেজগুলোকে এটি স্পর্শও করে না।
wp_redirect(…, 301): এটি গুগল ক্রলারকে ‘permanent redirect’ সিগন্যাল দেয়। এর ফলে গুগল বুঝতে পারে মেইন ডোমেনের পুরাতন বাংলা লিংকগুলোর সমস্ত এসইও অথরিটি এবং র্যাংকিং এখন থেকে নতুন সাব-ডোমেনের পাওনা।
সমাধান বাস্তবায়নের উপায় ২: কোড স্নিপেটস প্লাগইন ব্যবহার করা (নতুনদের জন্য নিরাপদ):
নতুন ব্যবহারকারীদের জন্য থিমের functions.php ফাইলে সরাসরি কোড এডিট করা কিছুটা ঝুঁকিপূর্ণ হতে পারে। কারণ কোডে সামান্য একটি সেমিকোলন (;) বা ব্র্যাকেটের ভুল হলে পুরো ওয়েবসাইট ডাউন হয়ে যাওয়ার (Critical Error) আশঙ্কা থাকে।
এই ঝামেলা এবং ঝুঁকি এড়ানোর সবচেয়ে সহজ ও নিরাপদ উপায় হলো Code Snippets প্লাগইন ব্যবহার করা। এই প্লাগইনের সুবিধা হলো, এটি থিমের ফাইল নষ্ট করে না এবং থিম আপডেট হলেও কোড মুছে যায় না। প্লাগইনের মাধ্যমে সেটআপ করার সহজ ধাপগুলো নিচে দেওয়া হলো:
১. প্লাগইন ইনস্টল ও অ্যাক্টিভ করা
ওয়ার্ডপ্রেস ড্যাশবোর্ডের বাঁদিকের মেনু থেকে Plugins > Add New-এ যান। ডানদিকের সার্চ বক্সে লিখুন “Code Snippets”। প্লাগইনটি (by Code Snippets Pro) পেয়ে গেলে Install Now-এ ক্লিক করুন এবং ইনস্টল শেষে Activate করুন।
২. নতুন কোড স্নিপেট তৈরি করা
প্লাগইনটি অ্যাক্টিভ হওয়ার পর ড্যাশবোর্ডের মেনুতে Snippets নামে নতুন একটি অপশন আসবে। সেখানে গিয়ে Add New-এ ক্লিক করুন। একদম ওপরে শিরোনাম বা Title দেওয়ার জায়গায় লিখুন: Bangla URL 301 Redirect to Subdomain।
৩. কোড পেস্ট ও সেভ করা
নিচের বড় টেক্সট বক্সে ওপরের মূল পিএইচপি (PHP) কোডটি হুবহু পেস্ট করে দিন। কোড বক্সের ঠিক নিচেই থাকা অপশনগুলো থেকে “Run snippet everywhere” সিলেক্ট করা আছে কি না তা নিশ্চিত করুন। সবশেষে নিচে স্ক্রোল করে Save Changes and Activate বাটনে ক্লিক করুন।
(LiteSpeed Cache) থাকলে সতর্কতা:
যদি আপনার সার্ভারে LiteSpeed Cache (LSCache) প্লাগইনটি সচল থাকে, তবে কোড বসানোর পরও সমস্যার সমাধান না-ও হতে পারে। কারণ অনেক সময় লাইটস্পিড প্লাগইনটি মেইন ডোমেনের পুরোনো ৪০৪ (Not Found) পেজগুলোকে ক্যাশ বা মেমরিতে জমা করে রাখে। এর ফলে কোড চালু করার পরেও পুরোনো পাঠকরা রিডাইরেক্ট না হয়ে, সেই পুরোনো ক্যাশ হয়ে থাকা ৪০৪ পেজটিই বারবার দেখতে পারেন।
এই জটিলতা এড়াতে কোডটি চালু করার পর লাইটস্পিড প্লাগইনে ছোট্ট একটি সেটিংস পরিবর্তন করে নিতে হবে:
১. ওয়ার্ডপ্রেস ড্যাশবোর্ড থেকে LiteSpeed Cache > Toolbox অপশনে যান। ২. ওপরে থাকা ট্যাবগুলো থেকে Purge ট্যাবে ক্লিক করুন। ৩. সেখানে Purge All বাটনে ক্লিক করে সাইটের সমস্ত পুরোনো ক্যাশ পরিষ্কার করে দিন। ৪. এবার বামদিকের মেনু থেকে LiteSpeed Cache > Cache অপশনে যান। ৫. ওপরে থাকা Advanced ট্যাবে ক্লিক করুন। ৬. সেখানে “Cache 404 Pages” নামে একটি অপশন পাবেন। এই অপশনটি যদি ON করা থাকে, তবে এটিকে অবশ্যই OFF করে দিন এবং নিচে স্ক্রোল করে Save Changes-এ ক্লিক করুন।
৪০৪ পেজের ক্যাশ অপশনটি বন্ধ করে দিলে লাইটস্পিড সার্ভার কোনো এরর পেজকে আটকে রাখবে না এবং আমাদের পিএইচপি কোডটি প্রতিবার শতভাগ সফলভাবে ইউআরএল স্ক্যান করে রিডাইরেক্ট করতে পারবে।
রিডাইরেক্ট সেটআপের পর যেভাবে টেস্ট করবেন
কোডটি ফাইলে বসানোর পর অথবা প্লাগইন দিয়ে চালু করার পর, এটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য ৩টি সহজ উপায়ে টেস্ট করে নেওয়া উচিত:
১. ব্রাউজারে সরাসরি ইনকগনিটো মোডে টেস্ট (Live Test)
ব্রাউজারের পুরোনো ক্যাশ (Cache) মেমরির ঝামেলা এড়াতে গুগল ক্রোম বা যেকোনো ব্রাউজারের Incognito Window বা প্রাইভেট উইন্ডো ব্যবহার করুন। একটি ইনকগনিটো উইন্ডো খুলে আপনার মেইন ডোমেনের যেকোনো একটি পুরাতন বাংলা আর্টিকেলের পুরো লিংকটি অ্যাড্রেস বারে লিখুন (যেমন: https://economicsgoln.com/সামষ্টিক-অর্থনীতি/) এবং এন্টার চাপুন। যদি দেখেন পেজটি চোখের পলকে কোনো এরর ছাড়াই স্বয়ংক্রিয়ভাবে বদলে গিয়ে নতুন সাব-ডোমেনের নির্দিষ্ট লিংকে (https://bn.economicsgoln.com/সামষ্টিক-অর্থনীতি/) চলে গেছে, তবে বুঝবেন কোড সফলভাবে কাজ করছে।
২. ট্র্যাকিং বা এএমপি (AMP) প্যারামিটার টেস্ট
ফেসবুক বা গুগল থেকে আসা ট্রাফিকের সাথে অনেক সময় অতিরিক্ত প্যারামিটার থাকে। কোডটি এগুলোকে ঠিকঠাক হ্যান্ডেল করতে পারছে কিনা তা নিশ্চিত করতে ব্রাউজারের অ্যাড্রেস বারে বাংলা লিংকের শেষে অতিরিক্ত অংশ যোগ করে এন্টার চাপুন, যেমন: https://economicsgoln.com/সামষ্টিক-অর্থনীতি/?amp=1 অথবা https://economicsgoln.com/সামষ্টিক-অর্থনীতি/?fbclid=123। রিডাইরেক্ট হওয়ার পর নতুন সাব-ডোমেনের লিংকের শেষেও যদি ওই একই প্যারামিটার অক্ষত অবস্থায় দেখা যায় এবং পেজটি সুন্দরভাবে লোড হয় (কোনো ৪০৪ এরর না আসে), তবে আপনার সাইট এখন সম্পূর্ণ নিরাপদ।
৩. এসইও এবং ৩০১ রেসপন্স কোড চেক (Technical Test)
গুগল ক্রলার আসলেই এটিকে “৩০১ পার্মানেন্ট রিডাইরেক্ট” হিসেবে দেখছে কিনা তা শতভাগ নিশ্চিত করার জন্য httpstatus.io অথবা redirectcheck.com-এর মতো যেকোনো একটি ফ্রি ওয়েবসাইটে যান। সেখানে আপনার মেইন ডোমেনের পুরাতন বাংলা লিংকটি বক্সে পেস্ট করে Check Status বাটনে ক্লিক করুন। ফলাফলে যদি 301 Moved Permanently স্ট্যাটাস কোডটি সবুজ রঙে দেখায় এবং Destination URL হিসেবে আপনার নতুন সাব-ডোমেনের লিংকটি আসে, তবে বুঝবেন টেকনিক্যাল এসইও মাইগ্রেশন একদম নিখুঁত হয়েছে। আমি এই কোডটি দিয়ে এবং লাইটস্পিডের ক্যাশ ক্লিয়ার করে সমাধান করার পর গুগল ক্রলার খুব দ্রুত নতুন সাব-ডোমেনের লিংকগুলো ইনডেক্স করা শুরু করে এবং আমার সাইটের অ্যানালিটিক্সে রিডার ও ট্রাফিক পুনরায় ফিরে আসে।
আরও দেখুন:
