রিডাইরেক্টসহ একটি URL শর্টনার কীভাবে তৈরি করবেন

একটি URL সংক্ষিপ্তকরণ সেবা তৈরি করার গাইড, যা প্রযুক্তিগত পছন্দ, │ ডাটাবেস ডিজাইন, কোড জেনারেট এবং পুনঃনির্দেশের মূল লজিক, এবং মোতায়েনকে অন্তর্ভুক্ত করে।

Intermediate
রিডাইরেক্টসহ একটি URL শর্টনার তৈরি করতে বেশ কয়েকটি মূল উপাদান এবং ধাপ জড়িত। এটি আপনি কীভাবে করতে পারেন তার একটি সাধারণ রূপরেখা এখানে দেওয়া হল: ১. আপনার প্রযুক্তি স্ট্যাক নির্বাচন করুন ব্যাকএন্ড ভাষা/ফ্রেমওয়ার্ক: অনুরোধগুলি পরিচালনা করতে, শর্ট কোড তৈরি করতে এবং একটি ডেটাবেসের সাথে যোগাযোগ করতে আপনার একটি সার্ভার-সাইড ভাষা এবং ফ্রেমওয়ার্কের প্রয়োজন হবে। জনপ্রিয় বিকল্পগুলির মধ্যে রয়েছে পাইথন (Flask, Django), Node.js (Express), Ruby (Rails), Go, অথবা PHP (Laravel)। ডেটাবেস: শর্ট কোড এবং আসল URL-এর মধ্যে ম্যাপ সংরক্ষণ করতে একটি ডেটাবেস অপরিহার্য। বিকল্পগুলির মধ্যে রয়েছে PostgreSQL, MySQL, MongoDB, অথবা খুব উচ্চ-পারফরম্যান্সের অস্থায়ী শর্ট লিঙ্কের জন্য Redis। ফ্রন্টএন্ড (ঐচ্ছিক কিন্তু সুপারিশকৃত): ব্যবহারকারী-বান্ধব ইন্টারফেসের জন্য, আপনি HTML, CSS, এবং JavaScript (React, Vue, বা Angular-এর মতো ফ্রেমওয়ার্কের সাথে) ব্যবহার করতে পারেন যাতে ব্যবহারকারীরা দীর্ঘ URL ইনপুট করতে পারে এবং তাদের তৈরি সংক্ষিপ্ত URL দেখতে পারে। ২. ডাটাবেস স্কিমা ডিজাইন আপনার URL ম্যাপিং সংরক্ষণ করার জন্য একটি টেবিল (অথবা কালেকশন) প্রয়োজন হবে। একটি মৌলিক স্কিমা অন্তর্ভুক্ত থাকতে পারে: * id: প্রাইমারি কী (অটো-ইনক্রিমেন্টিং ইন্টিজার বা UUID)। * short_code: একটি অনন্য, সংক্ষিপ্ত স্ট্রিং (যেমন, "abcde") যা আপনার শর্ট URL-এর অংশ হবে। দ্রুত অনুসন্ধানের জন্য এটিকে ইনডেক্স করা উচিত। * original_url: পূর্ণ, দীর্ঘ URL যা শর্ট কোড পুনঃনির্দেশ করে। * created_at: শর্ট URL তৈরি হওয়ার সময়ের টাইমস্ট্যাম্প। * clicks (ঐচ্ছিক): শর্ট URL কতবার অ্যাক্সেস হয়েছে তা গণনা করার জন্য একটি কাউন্টার। ৩. মূল ব্যাকএন্ড লজিক শর্ট কোড জেনারেশন: যখন কোনো ব্যবহারকারী একটি দীর্ঘ URL জমা দেয়, আপনার ব্যাকএন্ডকে একটি অনন্য short_code তৈরি করতে হবে। এটি নিম্নলিখিত উপায়ে করা যেতে পারে: র‍্যান্ডম স্ট্রিং জেনারেট করা: আলফানিউমেরিক অক্ষর ব্যবহার করে একটি নির্দিষ্ট দৈর্ঘ্যের (যেমন, 6-8 অক্ষর) র‍্যান্ডম স্ট্রিং তৈরি করুন। আপনাকে পরীক্ষা করতে হবে যে এই কোডটি ইতিমধ্যেই আপনার ডাটাবেসে আছে কিনা এবং অনন্যতা নিশ্চিত করতে থাকলে পুনরায় তৈরি করতে হবে। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: মূল URL বা URL এবং টাইমস্ট্যাম্পের সংমিশ্রণ হ্যাশ করুন, তারপর হ্যাশের একটি অংশ নিন। এটি আরও নির্ধারিত হতে পারে কিন্তু তবুও অনন্যতা পরীক্ষা প্রয়োজন। হ্যাশিং: বেস62 এনকোডিং: যদি আপনি আপনার ডেটাবেসে অটো-ইনক্রিমেন্টিং id ব্যবহার করেন, তাহলে সেই ইন্টিজার আইডিকে বেস62 স্ট্রিং (0-9, a-z, A-Z) এ রূপান্তর করতে পারেন। এটি অনন্যতা নিশ্চিত করে এবং খুবই দক্ষ। ম্যাপিং সংরক্ষণ: একবার একটি অনন্য short_code তৈরি হয়ে গেলে, short_code এবং original_url আপনার ডাটাবেসে সংরক্ষণ করুন। রিডাইরেকশন হ্যান্ডলিং: যখন কোনো ব্যবহারকারী একটি সংক্ষিপ্ত URL (যেমন, yourshortener.com/abcde) অ্যাক্সেস করে, তখন আপনার সার্ভারের উচিত: URL পাথ থেকে short_code (abcde) বের করা। আপনার ডাটাবেসে কুয়েরি করে সেই short_code-এর সাথে যুক্ত original_url খুঁজে বের করুন। যদি এটি পাওয়া যায়, তাহলে original_url-এ HTTP 301 (Moved Permanently) বা 302 (Found) রিডাইরেক্ট ইস্যু করুন। স্থায়ী রিডাইরেক্টের জন্য সাধারণত 301 preferred, কারণ এটি ব্রাউজার দ্বারা ক্যাশ করা হয়, ফলে আপনার সার্ভারে পরবর্তী অনুরোধগুলি কমে যায়। যদি না পাওয়া যায়, তাহলে 404 Not Found ত্রুটির পৃষ্ঠা ফেরত দিন। ৪. API এন্ডপয়েন্ট (ব্যাকএন্ডের জন্য) POST /shorten: অনুরোধের বডিতে original_url নেয়। একটি short_code তৈরি করে। ম্যাপিং সংরক্ষণ করে। সম্পূর্ণ সংক্ষিপ্ত URL ফেরত দেয় (যেমন, yourshortener.com/generated_code)। GET /:short_code: URL পাথ থেকে short_code নেয়। original_url খুঁজে বের করে। রিডাইরেক্ট সম্পাদন করে। 5. ফ্রন্টএন্ড (যদি প্রযোজ্য হয়) একটি সাধারণ ওয়েব পেজ, যাতে লম্বা URL-এর জন্য একটি ইনপুট ফিল্ড এবং সাবমিট করার জন্য একটি বাটন থাকবে। ব্যবহারকারীকে তৈরি হওয়া সংক্ষিপ্ত URL দেখান। ৬. ডিপ্লয়মেন্ট আপনাকে একটি ডোমেইন নামের (যেমন, myurl.short) প্রয়োজন হবে। আপনার ব্যাকএন্ড অ্যাপ্লিকেশনটি একটি সার্ভারে হোস্ট করুন (যেমন, AWS, Google Cloud, Heroku, Vercel)। আপনার ওয়েব সার্ভার (যেমন, Nginx, Apache) কনফিগার করুন যাতে এটি অনুরোধগুলো আপনার ব্যাকএন্ড অ্যাপ্লিকেশনে রাউট করে এবং ডোমেইনটি পরিচালনা করে। উদাহরণ প্রবাহ: ব্যবহারকারী yourshortener.com-এ যান। ব্যবহারকারী https://www.example.com/very/long/path/to/a/resource লিখে "সংক্ষিপ্ত করুন" এ ক্লিক করেন। ফ্রন্টএন্ড দীর্ঘ URL সহ yourshortener.com/shorten এ একটি POST অনুরোধ পাঠায়। ব্যাকএন্ড XyZ12a-এর মতো একটি অনন্য short_code তৈরি করে। ব্যাকএন্ড XyZ12a -> সংরক্ষণ করে। https://www.example.com/very/long/path/to/a/resource ডাটাবেসে। ব্যাকএন্ড yourshortener.com/XyZ12a দিয়ে প্রতিক্রিয়া জানায়। ব্যবহারকারী yourshortener.com/XyZ12a শেয়ার করে। অন্য একজন ব্যবহারকারী yourshortener.com/XyZ12a-এ ক্লিক করে। তাদের ব্রাউজার yourshortener.com/XyZ12a-এ একটি GET অনুরোধ পাঠায়। ব্যাকএন্ড XyZ12a অনুসন্ধান করে এবং মূল URL খুঁজে পায়। ব্যাকএন্ড ব্যবহারকারীর ব্রাউজারে HTTP 301 রিডাইরেক্ট রেসপন্স পাঠায়, যা https://www.example.com/very/long/path/to/a/resource-এ নির্দেশ করে। ব্যবহারকারীর ব্রাউজার তখন মূল দীর্ঘ URL-এ নেভিগেট করে।