وقتی آدرس یک صفحه تغییر میکند، دامنه عوض میشود یا سایت به سرور دیگری منتقل میشود، مسیرهای قدیمی دیگر لزوماً کاربر را به محتوای موردنظر نمیرسانند. در چنین شرایطی، کسی که از طریق یک بوکمارک قدیمی یا بکلینک وارد سایت میشود ممکن است به خطای 404 برسد. ریدایرکت دائمی راهی است برای اینکه این مسیر قطع نشود و کاربر به آدرس جدید هدایت شود.
ریدایرکت 301 این انتقال دائمی را بهصورت یک کد وضعیت HTTP اعلام میکند. مرورگر و موتور جستوجو با دریافت این کد متوجه میشوند که صفحۀ قبلی برای همیشه به آدرس دیگری منتقل شده است. اگر ریدایرکت بهدرستی تنظیم شود، اعتبار صفحه نیز به مقصد جدید منتقل میشود و تغییر URL با ریسک کمتری برای سئو انجام میگیرد.
در این مقاله از مجلۀ ویپیاس مارکت، هم تفاوت 301 با سایر روشهای تغییر مسیر را بررسی میکنیم و هم سراغ روشهای اجرای آن در وردپرس، وبسرورها و زبانهای برنامهنویسی میرویم. تا انتهای این مطلب با ما همراه باشید.
ریدایرکت 301 چیست؟
ریدایرکت 301 یکی از کدهای وضعیت HTTP است که برای اعلام انتقال دائمی یک آدرس به کار میرود. وقتی کاربر یا خزندهای مانند Googlebot آدرس قدیمی را درخواست میکند، سرور با این کد مشخص میکند که محتوای موردنظر از این پس در مسیر دیگری قرار دارد.
این پیام برای موتورهای جستوجو اهمیت زیادی دارد؛ چون به آنها کمک میکند آدرس جدید را بهعنوان نسخۀ اصلی (Canonical) در نظر بگیرند و بهتدریج جای URL قبلی را با آن عوض کنند. از طرف دیگر، کاربر هم بهجای رسیدن به صفحۀ 404 مستقیماً وارد مقصد جدید میشود. بنابراین ریدایرکت 301 را میتوان پلی دائمی میان URL قدیمی و آدرس جدید دانست؛ پلی که هم مسیر کاربر را حفظ میکند و هم تکلیف موتور جستوجو را روشنتر میسازد.
2 روش انتقال متداول: سمت سرور در برابر سمت کاربر (HTML/JS)
تغییر مسیر همیشه به یک شکل انجام نمیشود. بعضی ریدایرکتها در سطح سرور اجرا میشوند و بعضی دیگر پس از بارگذاری صفحه، در سمت مرورگر. برای انجام یک انتقال دائمی، روشهای سمت سرور معمولاً انتخاب استانداردتری هستند؛ بااینحال، شناخت روشهای سمت کاربر هم کمک میکند بدانید هرکدام در چه شرایطی کاربرد دارند. این روشها عبارتاند از:
- انتقال با HTML (Meta Refresh): در این روش، یک تگ متا در هدر HTML قرار میگیرد و مرورگر پس از زمان تعیینشده کاربر را به آدرس دیگری میفرستد. گوگل اعلام کرده است که Meta Refresh با زمان صفر ثانیه را مشابه یک ریدایرکت دائمی (301) در نظر میگیرد. بااینحال، چون این روش در مرورگر پردازش میشود، بهتر است زمانی از آن استفاده کنید که به تنظیمات سمت سرور دسترسی ندارید.
- انتقال با JavaScript (JS Redirect): اینجا تغییر مسیر پس از اجرای کد جاوااسکریپت انجام میشود. خزندههای گوگل برای تشخیص چنین ریدایرکتی باید صفحه را رندر کنند؛ در نتیجه پردازش آن به مرحلۀ بیشتری نیاز دارد و برای انتقال دائمی، معمولاً گزینۀ مناسبی بهجای ریدایرکت سمت سرور نیست.
پس اگر دسترسی لازم به سرور را دارید، بهتر است انتقال دائمی را همانجا و با کد وضعیت HTTP 301 انجام دهید. روشهای سمت کاربر بیشتر زمانی به کار میآیند که امکان تنظیم ریدایرکت در سطح سرور وجود نداشته باشد.
تفاوت ریدایرکت 301 و 302 چیست؟
ریدایرکت 301 و ریدایرکت 302 هر دو کاربر را از یک آدرس به آدرس دیگر میفرستند، اما پیامی که دربارۀ ماندگاری این تغییر به موتور جستوجو میدهند یکسان نیست. انتخاب بین آنها در درجۀ اول به این بستگی دارد که انتقال دائمی است یا قرار است فقط برای مدتی محدود برقرار بماند. تفاوت مهم دیگر به انتخاب نسخۀ اصلی یا Canonical برمیگردد، نه به این تصور که یکی اعتبار لینک را منتقل میکند و دیگری نه.
در جدول زیر تفاوت ریدایرکت 301 و 302 را به تفکیک ویژگی بررسی کردهایم:
|
ویژگی |
ریدایرکت 301 (دائمی) |
ریدایرکت 302 (موقت) |
|
نوع انتقال |
دائمی و بلندمدت |
موقت و کوتاهمدت |
|
انتقال اعتبار سئو |
اعتبار به صفحه جدید منتقل میشود |
اعتبار لینک میتواند منتقل شود |
|
رفتار گوگل (Canonical) |
آدرس مقصد بهعنوان نسخۀ اصلی (Canonical) ثبت میشود |
آدرس مبدأ معمولاً بهعنوان نسخۀ اصلی حفظ میشود |
|
کاربرد اصلی |
تغییر دامنه، ادغام صفحات و تغییر URL |
تعمیرات سایت، تست A/B و ناموجود بودن موقت کالا |
با ریدایرکت 301، آدرس جدید بهعنوان مقصد دائمی معرفی میشود و موتور جستوجو میتواند آن را جایگزین URL قبلی کند. ریدایرکت 302 برعکس، برای جابهجایی موقت است و این پیام را میدهد که آدرس اصلی هنوز همان URL قبلی است. هر دو میتوانند ارزش لینک (PageRank) را منتقل کنند، اما اگر یک انتقال دائمی را با 302 اجرا کنید، تشخیص آدرس نهایی برای موتور جستوجو پیچیدهتر میشود.
چه زمانی باید از ریدایرکت 301 استفاده کنیم؟
هرجا یک URL برای همیشه کنار گذاشته میشود و مقصد مرتبط و مشخصی برای آن دارید، ریدایرکت 301 میتواند گزینۀ مناسبی باشد. این وضعیت معمولاً در چند سناریوی رایج پیش میآید که عبارتاند از:
- تغییر دامنه اصلی: اگر نام برند یا دامنه سایت را عوض کردهاید، آدرسهای قدیمی باید کاربران و موتورهای جستوجو را به معادل جدید خود برسانند.
- انتقال از HTTP به HTTPS: هنگام فعالکردن اتصال امن، نسخههای HTTP باید به آدرسهای متناظر در HTTPS هدایت شوند.
- ادغام محتوا: وقتی چند مطلب مشابه را در یک صفحۀ جامعتر ادغام میکنید، میتوانید URLهای قبلی را به صفحۀ نهایی منتقل کنید تا مسیرهای قدیمی بیاستفاده نمانند و مشکل کنیبالیزیشن یا همخواری کلمات کلیدی کاهش پیدا کند.
- حذف صفحات و محصولات قدیمی: اگر صفحهای برای همیشه حذف شده است، اما جایگزین مرتبطی دارد، ریدایرکت باید به همان مقصد نزدیک هدایت شود؛ مانند محصولی مشابه یا یک دستهبندی مرتبط. فرستادن تمام صفحات حذفشده به صفحۀ اصلی میتواند از دید گوگل به Soft 404 منجر شود و انتقال اعتبار را مختل کند.
- اصلاح آدرسهای نامناسب: گاهی URL فعلی بیش از حد طولانی، مبهم یا ناخواناست. اگر قرار است ساختار آدرس را برای همیشه تغییر دهید، 301 مسیر قدیمی را به نسخۀ جدید متصل میکند.
تأثیر ریدایرکت 301 بر سئو سایت چگونه است؟
اهمیت ریدایرکت 301 در سئو فقط منوط به این نیست که کاربر را به صفحۀ دیگری میفرستد. وقتی URL یک صفحه تغییر میکند، این ریدایرکت کمک میکند اعتبار همان صفحه (Link Juice) به مقصد جدید منتقل شود. منظور از Link Juice در اینجا اعتبار صفحه است، نه اعتبار کل دامنه.
برای مثال، اگر آدرس یک مقالۀ پربازدید عوض شود، بکلینکهایی که قبلاً به URL قدیمی اشاره میکردند همچنان از طریق ریدایرکت به مقصد تازه میرسند و ارزش آنها از بین نمیرود. گوگل نیز تأیید کرده است که اجرای درست ریدایرکت 301 بهخودیخود باعث افت PageRank نمیشود. در کنار این موضوع، حذف مسیرهای منتهی به 404 هم تجربۀ کاربر را بهتر میکند و هم مسیر خزش موتورهای جستوجو را واضحتر نگه میدارد.
مراحل پیادهسازی ریدایرکت 301
روش نوشتن و اجرای کد ریدایرکت 301 به وبسرور، سیستم مدیریت محتوا یا فناوری مورد استفاده در سایت بستگی دارد. پیش از اینکه سراغ روشهای اجرای ریدایرکت 301 برویم، یک نکتۀ عملی را در نظر داشته باشید: ریدایرکت 301 ممکن است در مرورگر کش (Cache) شود. به همین دلیل، هنگام ساخت یا تغییر یک قانون حساس، میتوانید ابتدا آن را با کد موقت 302 آزمایش کنید. وقتی مطمئن شدید مقصد درست است و حلقهای در مسیر وجود ندارد، ریدایرکت را به 301 تغییر دهید.
چگونه در وردپرس ریدایرکت انجام دهیم؟
در وردپرس معمولاً نیازی نیست برای هر ریدایرکت مستقیماً فایلهای سرور را ویرایش کنید. استفاده از یک افزونۀ ریدایرکت 301 راه سادهتری برای مدیریت این تغییر مسیرهاست. اینکه بهترین افزونه ریدایرکت 301 برای وردپرس کدام گزینه است، به نیاز سایت شما بستگی دارد؛ ممکن است یک افزونۀ مستقل مانند Redirection کافی باشد یا ترجیح بدهید همین قابلیت را از افزونۀ سئوی سایت مدیریت کنید. از جمله Rank Math و Yoast، نیز چنین قابلیتی دارند.
تنظیم ریدایرکت از طریق کنترلپنلها (cPanel، DirectAdmin و Plesk)
اگر سایت شما روی هاست مدیریتشده قرار دارد، احتمالاً میتوانید بخشی از ریدایرکتها را از خود کنترلپنل بسازید. مسیر دقیق تنظیمات در هر پنل فرق میکند، اما منطق کار یکسان است: شما آدرس مبدأ را مشخص میکنید، مقصد را میدهید و نوع انتقال را روی 301 قرار میدهید. در ادامه تنظیم ریدایرکت در هر پنل مدیریتی را بررسی میکنیم:
- در cPanel: از بخش Domains وارد Redirects شوید، نوع Permanent (301) را انتخاب کنید و آدرس مبدأ و مقصد را وارد کنید.
- در DirectAdmin: از منوی Site Features وارد Site Redirection شوید و مسیر مبدأ و مقصد را ثبت کنید.
- در Plesk: از بخش Hosting Settings و گزینۀ Preferred domain میتوانید ریدایرکتهای کلی، مثل هدایت نسخۀ دارای www به بدون www یا برعکس، را تنظیم کنید. برای مسیرهای مشخصتر معمولاً باید قوانین را در فایلهای پیکربندی وبسرور تعریف کنید.
تنظیم ریدایرکت با فایل htaccess. در وبسرور Apache
اگر سایت روی Apache اجرا میشود، فایل htaccess. یکی از راههای رایج برای تعریف ریدایرکت در سطح دایرکتوری است. مزیتش این است که تغییرات را میتوان سریع اعمال کرد، اما همین دسترسی مستقیم باعث میشود خطاهای کوچک هم دردسرساز شوند؛ یک اشتباه تایپی در این فایل ممکن است سایت را با خطای 500 روبهرو کند. بنابراین قبل از ویرایش، داشتن نسخۀ پشتیبان ضروری است.
برای اینکه فقط یک صفحه را به آدرس دیگری منتقل کنید، میتوانید از دستور زیر استفاده کنید:
Redirect 301 /old-url/ https://yourdomain.com/new-url/
اگر هدفتان هدایت نسخۀ بدون www به نسخۀ دارای www است، قانون میتواند به شکل زیر باشد:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301,NC]
برای انتقال کل دامنۀ قدیمی به دامنه جدید نیز باید قانون طوری نوشته شود که همه مسیرها به مقصد متناظر بروند و حلقه ایجاد نشود. نمونۀ زیر همین کار را انجام میدهد:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301,NC]
تنظیم تغییر مسیر در وبسرور ویندوزی IIS
در وبسرور IIS، برای تعریف این نوع قوانین معمولاً به ماژول URL Rewrite نیاز دارید. این ماژول بهصورت پیشفرض فعال نیست و باید جداگانه نصب شود. پس از نصب، میتوانید قوانین ریدایرکت را در فایل web.config بنویسید. ساختار تنظیمات باید داخل تگهای <configuration> و <system.webServer> قرار بگیرد، مانند نمونۀ زیر:
<configuration> <system.webServer> <rewrite> <rules> <rule name="Redirect Rule" stopProcessing="true"> <match url="^old-page$" /> <action type="Redirect" url="/new-page" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
نکتۀ مهم: اگر سایت شما روی سرور مجازی میزبانی میشود و به تنظیمات وبسرور دسترسی دارید، میتوانید ریدایرکت 301 را مستقیماً از طریق فایلهای پیکربندی Apache یا Nginx اعمال کنید.
نحوۀ اجرای ریدایرکت در وبسرور Nginx
در Nginx، ریدایرکتها معمولاً داخل بلوک server {} نوشته میشوند. فایل پیکربندی بسته به ساختار سرور میتواند در مسیرهایی مانند /etc/nginx/sites-available/ یا /etc/nginx/conf.d/ قرار داشته باشد.
اگر قرار است کل درخواستها به مقصدی دائمی منتقل شوند، return 301 یکی از روشهای مستقیم و استاندارد در Nginx است:
server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}
برای انتقال یک مسیر مشخص هم میتوانید از Rewrite استفاده کنید:
server {
# سایر تنظیمات سرور...
rewrite ^/old-url/?$ /new-url/ permanent;
}
پس از ویرایش فایل پیکربندی Nginx، بهتر است پیش از بارگذاری مجدد سرویس، صحت تنظیمات را بررسی کنید. دستور زیر ابتدا پیکربندی را تست میکند و فقط در صورت درستبودن آن، Nginx را reload میکند:
sudo nginx -t && sudo systemctl reload nginx
انتقال آدرس با زبانهای برنامهنویسی
در سایتهای اختصاصی، لازم نیست ریدایرکت حتماً در فایل پیکربندی وبسرور نوشته شود و زبان یا فریمورک برنامهنویسی هم میتواند هدر تغییر مسیری را در پاسخ HTTP ارسال کند. شکل پیادهسازی بسته به فناوری سایت متفاوت است. در ادامه چند نمونۀ رایج را با هم میبینیم:
در PHP:
<?php
header("Location: https://newdomain.com/new-url", true, 301);
exit();
?>
در Node.js با فریمورک Express:
app.get('/old-page', function(req, res) {
res.redirect(301, '/new-page');
});
در Python با فریمورک Flask:
from flask import redirect
@app.route('/old-page')
def redirect_page():
return redirect('/new-page', code=301)
در ASP.NET مربوط به .NET Framework قدیمی، نه .NET Core:
Response.RedirectPermanent("https://newdomain.com/new-url");
در ASP.NET Core نیز میتوان از متد RedirectPermanent (“/new-url”) در کنترلر استفاده کرد.
2 اشتباه رایج در تنظیم ریدایرکتهای دائمی
تنظیم نادرست ریدایرکتها میتواند بهجای حل مشکل، مسیر دسترسی کاربر و خزندههای موتور جستوجو را پیچیدهتر کند و بعضی خطاها هم مستقیماً روی سرعت، خزش و تجربه کاربری اثر میگذارند. دو نمونه از اشتباهات رایج در تنظیم ریدایرکتهای دائمی، زنجیره و حلقۀ ریدایرکت هستند.
1) زنجیرۀ ریدایرکت چیست و چرا مشکلساز است؟
زنجیرۀ ریدایرکت زمانی شکل میگیرد که یک URL ابتدا به آدرس دوم و سپس از آنجا به مقصد دیگری منتقل شود؛ مثلاً «الف» به «ب» و «ب» به «ج». هرچند خزندههای گوگل میتوانند چندین پرش (Hop) را دنبال کنند، اما طولانیشدن این مسیر خزش را کندتر میکند و رسیدن کاربر و ربات به مقصد نهایی را بیدلیل به تأخیر میاندازد.
2) حلقۀ ریدایرکت چگونه ایجاد میشود؟
حلقه یا Redirect Loop زمانی رخ میدهد که آدرس «الف» به «ب» هدایت شود و «ب» دوباره کاربر را به «الف» برگرداند. مرورگر در چنین مسیری هیچوقت به مقصد نهایی نمیرسد و معمولاً خطای ERR_TOO_MANY_REDIRECTS نمایش داده میشود.
چطور عملکرد ریدایرکت 301 را تست کنیم؟
بعد از ساخت ریدایرکت، صرف بازشدن صفحۀ مقصد کافی نیست؛ بهتر است هم کد وضعیت و هم آدرس نهایی را بررسی کنید تا مطمئن شوید انتقال دقیقاً همانطور که انتظار دارید انجام میشود یا نه. چند روش ساده برای انجام این کار وجود دارد که عبارتاند از:
- تست با cURL: دستور curl -I http://old-url.com را در ترمینال اجرا کنید. در خروجی باید کد HTTP/1.1 301 Moved Permanently و هدر Location: https://new-url.com را ببینید.
- بررسی در مرورگر: کلید F12 را بزنید و در تب Network، کد وضعیت ۳۰۱ و آدرس مقصد را بررسی کنید.
- تست در حالت ناشناس: آدرس قدیمی را در Incognito باز کنید تا کش مرورگر کمتر در نتیجۀ آزمایش دخالت داشته باشد.
- بررسی در سرچ کنسول: با ابزار URL Inspection میتوانید وضعیت آدرس را از دید گوگل بررسی کنید.
جمعبندی
ریدایرکت 301 زمانی درست کار میکند که کاربر، موتور جستوجو و اعتبار صفحه را از URL قدیمی به مقصدی واقعاً مرتبط برساند. فرقی ندارد این انتقال را در Apache ،Nginx ،IIS، وردپرس یا داخل کد برنامهنویسی تنظیم کنید؛ نتیجه باید یک مسیر کوتاه، روشن و بدون حلقه باشد. از آنجا که یک قانون اشتباه میتواند هم دسترسی کاربران و هم سئو را تحت تأثیر قرار دهد، تغییرات حساس را ابتدا در محیط تست (Staging) بررسی کنید و پیش از ویرایش فایلهای سرور نسخۀ پشتیبان (Backup) بگیرید.
سؤالات متداول
آیا استفادۀ زیاد از کد ۳۰۱ سرعت سایت را کاهش میدهد؟
اگر تعداد زیادی قانون ریدایرکت بهصورت خطبهخط در فایلهایی مانند htaccess. پردازش شوند، زمان پاسخگویی سرور (TTFB) میتواند افزایش پیدا کند. در مقیاس بزرگ، استفاده از قوانین کلی (RegEx) یا تعریف ریدایرکتها در سطح وبسرور، مانند پیکربندی Nginx، معمولاً مدیریتپذیرتر است.
انتقال کامل اعتبار صفحه چقدر زمان میبرد؟
زمان ثابتی برای این فرایند وجود ندارد و عواملی مانند بودجۀ خزش (Crawl Budget) و میزان فعالیت سایت روی آن اثر میگذارند. ممکن است انتقال و شناسایی کامل آدرس جدید از چند روز تا چند هفته طول بکشد. در این فاصله بهتر است مسیرهای تعیینشده را بدون دلیل تغییر ندهید تا خزندههای گوگل فرصت کافی برای شناسایی و ایندکس URL جدید داشته باشند.
آیا میتوان ریدایرکت دائمی را لغو کرد؟
از نظر فنی بله. میتوانید قانون ریدایرکت را حذف کنید. بااینحال، برگشتن به آدرس قبلی بعد از یک انتقال دائمی ممکن است هم برای موتورهای جستوجو و هم بهدلیل کش مرورگرها دردسر ایجاد کند. بعضی مرورگرها ممکن است 301 قبلی را برای مدتی در کش نگه دارند و موتور جستوجو هم برای تشخیص دوباره آدرس اصلی به زمان نیاز دارد.
ریدایرکت 301 را تا چه زمانی باید روی سایت نگه داریم؟
طبق توصیه جان مولر از گوگل، بهتر است ریدایرکتهای 301 را دستکم ۱ تا ۳ سال نگه دارید. اگر دامنۀ قدیمی همچنان در اختیار شماست، حفظ ریدایرکت برای مدت طولانیتر کمک میکند بازدیدکنندگانی که از بکلینکهای قدیمی یا بوکمارک مرورگر وارد میشوند، همچنان به مقصد درست برسند.






