সার্ভারে রিডাইরেক্ট লজিক প্রয়োগ করার জন্য সাধারণত ক্লায়েন্টকে একটি নির্দিষ্ট HTTP স্ট্যাটাস কোড এবং একটি Location হেডার পাঠানো জড়িত থাকে। যখন একটি ব্রাউজার এই প্রতিক্রিয়া গ্রহণ করে, তখন এটি স্বয়ংক্রিয়ভাবে Location হেডারে নির্দিষ্ট URL-এ নেভিগেট করে।
এখানে সাধারণ পদ্ধতি এবং বিবেচনার একটি ব্রেকডাউন রয়েছে:
1. রিডাইরেক্টের জন্য HTTP স্ট্যাটাস কোড
রিডাইরেক্টের জন্য সবচেয়ে সাধারণ HTTP স্ট্যাটাস কোডগুলি হল:
- 301 স্থায়ীভাবে সরানো হয়েছে: এটি নির্দেশ করে যে রিসোর্সটি স্থায়ীভাবে একটি নতুন URL-এ সরানো হয়েছে। সার্চ ইঞ্জিনগুলি নতুন URL-এ তাদের ইনডেক্স আপডেট করবে এবং ক্লায়েন্টদের এই রিডাইরেক্টটি ক্যাশে করা উচিত।
- 302 পাওয়া গেছে (বা অস্থায়ীভাবে সরানো হয়েছে): এটি নির্দেশ করে যে রিসোর্সটি অস্থায়ীভাবে একটি ভিন্ন URL-এ উপলব্ধ। সার্চ ইঞ্জিনগুলি সাধারণত তাদের ইনডেক্স আপডেট করে না এবং ক্লায়েন্টদের এই রিডাইরেক্টটি ক্যাশে করা উচিত নয়।
- 307 অস্থায়ী রিডাইরেক্ট: এটি 302-এর HTTP/1.1 উত্তরসূরি। এটি স্পষ্টভাবে বলে যে রিডাইরেক্ট করার সময় অনুরোধ পদ্ধতি পরিবর্তন করা উচিত নয়।
বেশিরভাগ স্থায়ী রিডাইরেক্টের জন্য, SEO উদ্দেশ্যের জন্য 301 পছন্দ করা হয়। অস্থায়ী রিডাইরেক্টের জন্য, 302 বা 307 সাধারণ।
2. সার্ভার-সাইড বাস্তবায়ন উদাহরণ
সঠিক বাস্তবায়ন আপনার ব্যবহৃত সার্ভার-সাইড প্রযুক্তির উপর নির্ভর করে।
ক) Node.js (Express.js)
const express = require('express');
const app = express();
// স্থায়ী রিডাইরেক্ট
app.get('/old-path', (req, res) => {
res.redirect(301, '/new-path');
});
// অস্থায়ী রিডাইরেক্ট
app.get('/another-old-path', (req, res) => {
res.redirect('/another-new-path'); // ডিফল্টভাবে 302
});
// স্ট্যাটাস কোড সহ ম্যানুয়াল রিডাইরেক্ট
app.get('/manual-redirect', (req, res) => {
res.writeHead(301, {
'Location': '/final-destination'
});
res.end();
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
খ) Python (Flask)
from flask import Flask, redirect, url_for, abort, Response
app = Flask(__name__)
@app.route('/old-path')
def old_path():
return redirect(url_for('new_path'), code=301)
@app.route('/new-path')
def new_path():
return "Welcome to the new path!"
@app.route('/another-old-path')
def another_old_path():
return redirect('/another-new-path') // ডিফল্টভাবে 302
@app.route('/another-new-path')
def another_new_path():
return "This is another new path!"
@app.route('/manual-redirect')
def manual_redirect():
response = Response(status=301)
response.headers['Location'] = '/final-destination'
return response
@app.route('/final-destination')
def final_destination():
return "You reached the final destination!"
if __name__ == '__main__':
app.run(debug=True)
গ) PHP
<?php
// স্থায়ী রিডাইরেক্ট
if ($_SERVER['REQUEST_URI'] === '/old-path') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: /new-path");
exit();
}
// অস্থায়ী রিডাইরেক্ট
if ($_SERVER['REQUEST_URI'] === '/another-old-path') {
header("Location: /another-new-path"); // ডিফল্টভাবে 302
exit();
}
// ... বাকি PHP কোড
?>
ঘ) Apache (.htaccess)
Apache ওয়েব সার্ভারের জন্য, রিডাইরেক্টগুলি প্রায়শই .htaccess ফাইলগুলিতে বা প্রধান সার্ভার কনফিগারেশনে কনফিগার করা যেতে পারে।
# স্থায়ী রিডাইরেক্ট
Redirect 301 /old-path /new-path
# একটি ডোমেনের জন্য স্থায়ী রিডাইরেক্ট
RedirectMatch 301 ^/old-domain/(.*)$ http://www.new-domain.com/$1
# আরও জটিল রিডাইরেক্টের জন্য RewriteRule
RewriteEngine On
RewriteRule ^old-path-regex$ /new-path-target [R=301,L]
ঙ) Nginx
Nginx ওয়েব সার্ভারের জন্য, রিডাইরেক্টগুলি সার্ভার ব্লকে কনফিগার করা হয়।
server {
listen 80;
server_name example.com;
# স্থায়ী রিডাইরেক্ট
location = /old-path {
return 301 /new-path;
}
# অস্থায়ী রিডাইরেক্ট
location = /another-old-path {
return 302 /another-new-path;
}
# পুরো ডোমেন রিডাইরেক্ট করুন
server_name old-domain.com;
return 301 $scheme://new-domain.com$request_uri;
# ... অন্যান্য কনফিগারেশন
}
3. মূল বিবেচনা
- SEO: সার্চ ইঞ্জিন র্যাঙ্কিং সংরক্ষণের জন্য স্থায়ী পরিবর্তনের জন্য 301 ব্যবহার করুন।
- ব্যবহারকারীর অভিজ্ঞতা: রিডাইরেক্টগুলি দ্রুত এবং নির্বিঘ্ন হওয়া উচিত। রিডাইরেক্ট চেইনগুলি এড়িয়ে চলুন (চূড়ান্ত গন্তব্যে পৌঁছানোর আগে একাধিক রিডাইরেক্ট) কারণ তারা পৃষ্ঠা লোডিংকে ধীর করে দিতে পারে।
- নিরাপত্তা: ওপেন রিডাইরেক্ট দুর্বলতা প্রতিরোধের জন্য ব্যবহারকারীর সরবরাহ করা ইনপুট রিডাইরেক্ট করার সময় সতর্ক থাকুন। সর্বদা রিডাইরেক্ট URL গুলি যাচাই এবং পরিষ্কার করুন।
- আপেক্ষিক বনাম পরম URL: আপনি একই ডোমেনের মধ্যে রিডাইরেক্টের জন্য আপেক্ষিক পাথ (যেমন
/new-path) বা বিভিন্ন ডোমেনে রিডাইরেক্টের জন্য পরম URL (যেমনhttps://www.example.com/new-path) ব্যবহার করতে পারেন। - লগিং: পর্যবেক্ষণ এবং ডিবাগিংয়ের জন্য নিশ্চিত করুন যে আপনার সার্ভার রিডাইরেক্টগুলি লগ করে, বিশেষ করে 301।
- পরীক্ষা: নিশ্চিত করুন যে তারা প্রত্যাশা অনুযায়ী কাজ করে এবং কোনও অসীম লুপ বা ভুল গন্তব্য তৈরি করে না তা নিশ্চিত করার জন্য সমস্ত রিডাইরেক্ট লজিক পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন।