سئو | بلاگ وب‌داده

ریدایرکت ۳۰۱ و تغییر مسیر لینک‌ها در وردپرس

وقتی آدرس یک صفحه را عوض می‌کنید یا مطلبی را جابه‌جا می‌کنید، ریدایرکت ۳۰۱ بازدیدکننده و گوگل را بدون خطای 404 به آدرس تازه می‌رساند. در این راهنما سه روش ساخت ریدایرکت را گام‌به‌گام یاد می‌گیرید.
ریدایرکت 301 در وردپرس یعنی به مرورگر و موتورهای جستجو اعلام کنید که آدرس یک صفحه «به‌طور دائمی» تغییر کرده و باید کاربر را به نشانی جدید بفرستند. کد ۳۰۱ تقریباً تمام اعتبار سئوی صفحه‌ی قدیمی را به صفحه‌ی جدید منتقل می‌کند و از به‌وجود آمدن خطای 404 جلوگیری می‌کند. در این مقاله ابتدا تفاوت ریدایرکت دائمی و موقت را روشن می‌کنیم، بعد سه روش رایج ساخت ریدایرکت (افزونه، فایل htaccess و کدنویسی) را گام‌به‌گام و با مقایسه اجرا می‌کنیم و در پایان معایب و نکات صادقانه‌ی هر روش را بررسی می‌کنیم.
  • ریدایرکت ۳۰۱ چیست: انتقال دائمی یک آدرس به آدرس جدید که اعتبار سئو را هم منتقل می‌کند (در برابر ۳۰۲ که موقت است).
  • ساده‌ترین روش: افزونه‌ی رایگان Redirection با بیش از ۲ میلیون نصب فعال که بدون کدنویسی ریدایرکت می‌سازد.
  • روش سطح سرور: افزودن دستی دستور Redirect 301 به فایل .htaccess در آپاچی؛ سریع‌ترین روش اجرا.
  • روش کدنویسی: استفاده از wp_safe_redirect در فایل functions.php برای کنترل کامل.
  • نکته‌ی مهم: وردپرس هنگام تغییر نامک یک نوشته‌ی منتشرشده، خودش به‌صورت خودکار ریدایرکت ۳۰۱ می‌سازد.

در یک جمله

ریدایرکت ۳۰۱ پل میان آدرس قدیمی و جدید است؛ هم کاربر را بدون خطا به مقصد درست می‌رساند و هم رتبه‌ی صفحه را حفظ می‌کند. مهم‌ترین قانون این است که پیش از هر تغییری از سایت بکاپ بگیرید.
احتمالاً این مقاله را باز کرده‌اید چون می‌خواهید آدرس یک صفحه را عوض کنید، چند نوشته را جابه‌جا کنید یا خطاهای 404 سایت را برطرف کنید و نمی‌دانید کدام روش امن‌تر است. این تردید طبیعی است، چون انتخاب اشتباه می‌تواند به رتبه‌ی سایت آسیب بزند. در ادامه همه‌چیز را ساده و کاربردی توضیح می‌دهیم تا بعد از خواندن، خودتان بتوانید ریدایرکت درست را بسازید.

ریدایرکت 301 در وردپرس چیست؟

«ریدایرکت» یا تغییر مسیر یعنی وقتی کاربر یا موتور جستجو آدرسی را باز می‌کند، سرور او را به‌طور خودکار به آدرس دیگری می‌فرستد. عدد کنار آن، کد وضعیت HTTP است که نوعِ این انتقال را مشخص می‌کند. کد ۳۰۱ به معنای «انتقال دائمی» (Moved Permanently) است؛ یعنی این آدرس برای همیشه عوض شده و باید نشانی جدید جایگزین آن شود.
برای درک ساده‌تر، یک تشبیه پستی را در نظر بگیرید: فرض کنید خانه‌تان را عوض کرده‌اید و به اداره‌ی پست می‌گویید هر نامه‌ای که به آدرس قدیمی رسید، برای همیشه به آدرس جدید فرستاده شود. ریدایرکت ۳۰۱ دقیقاً همین کار را برای صفحه‌های سایت انجام می‌دهد؛ هم بازدیدکننده به مقصد درست می‌رسد و هم گوگل می‌فهمد باید آدرس جدید را به‌جای قدیمی ایندکس کند.
مهم‌ترین تفاوت در انتخاب کد وضعیت است. ۳۰۱ دائمی است و تقریباً تمام اعتبار سئوی صفحه را منتقل می‌کند، اما ۳۰۲ و ۳۰۷ «موقت»‌اند و برای زمانی به‌کار می‌روند که قرار است بعداً به آدرس اصلی برگردید (مثل صفحه‌ی در دست تعمیر). اگر تغییر آدرس شما همیشگی است، حتماً باید از ۳۰۱ استفاده کنید، نه ۳۰۲؛ استفاده‌ی اشتباه از کد موقت باعث می‌شود گوگل اعتبار صفحه‌ی قدیمی را به آدرس جدید منتقل نکند.

نکته: ۳۰۱ دائمی، ۳۰۲ موقت

اگر صفحه‌ای برای همیشه جابه‌جا شده، از ۳۰۱ استفاده کنید تا رتبه‌ی سئو حفظ شود. کد ۳۰۲ را فقط برای انتقال‌های موقتی به‌کار ببرید. اشتباه‌گرفتن این دو یکی از رایج‌ترین خطاهای سئو هنگام تغییر آدرس است.

آموزش گام‌به‌گام ایجاد ریدایرکت ۳۰۱

پیش از اینکه سراغ ساخت ریدایرکت بروید، سه پیش‌نیاز زیر را آماده کنید تا تغییرات بدون ریسک انجام شوند:

۱) از سایت بکاپ بگیرید

هر تغییر در آدرس‌ها، فایل htaccess یا functions.php می‌تواند سایت را موقتاً از کار بیندازد. پیش از شروع، یک نسخه‌ی پشتیبان کامل از فایل‌ها و دیتابیس تهیه کنید تا در صورت خطا به‌سرعت برگردید.

۲) آدرس قدیمی و جدید را مشخص کنید

فهرستی دقیق از مسیرهای قدیمی و آدرس‌های جدیدِ معادل آن‌ها بسازید. ریدایرکت باید همیشه به صفحه‌ی مرتبط برود، نه صفحه‌ی اصلی سایت؛ فرستادن همه‌چیز به صفحه‌ی نخست تجربه‌ی کاربر و سئو را خراب می‌کند.

۳) روش مناسب را انتخاب کنید

اگر با کد راحت نیستید، افزونه بهترین گزینه است. اگر دسترسی به فایل‌ها دارید و سرعت برایتان مهم است، روش htaccess سطح سرور سریع‌تر است. برای موارد خاص و سفارشی هم کدنویسی انتخاب می‌شود.

روش ۱: افزونه Redirection (ساده و بدون کد)

ساده‌ترین راه برای بیشتر کاربران، استفاده از یک افزونه‌ی ریدایرکت است. افزونه‌ی رایگان Redirection با بیش از ۲ میلیون نصب فعال، محبوب‌ترین گزینه است و علاوه بر ساخت ریدایرکت ۳۰۱، خطاهای 404 سایت را هم ردیابی می‌کند. مراحل کار ساده است: از مسیر «افزونه‌ها ← افزودن» عبارت Redirection را جستجو و نصب و فعال کنید، سپس به «ابزارها ← Redirection» بروید. در کادر Source URL آدرس قدیمی و در کادر Target URL آدرس جدید را وارد کنید، نوع را روی 301 بگذارید و روی Add Redirect بزنید. اگر تازه می‌خواهید سایت را راه بیندازید، راهنمای نصب وردپرس روی هاست سی‌پنل نقطه‌ی خوبی برای شروع است.
افزونه‌های سئوی محبوب مثل Rank Math و AIOSEO هم بخش مدیریت ریدایرکت دارند؛ پس اگر یکی از آن‌ها را نصب دارید، نیازی به افزونه‌ی جداگانه نیست.

روش ۲: ویرایش فایل htaccess (سطح سرور و سریع)

اگر سایت شما روی وب‌سرور آپاچی اجرا می‌شود (که در هاست‌های اشتراکی رایج است)، می‌توانید ریدایرکت را مستقیماً در فایل .htaccess تعریف کنید. این روش چون در سطح سرور اجرا می‌شود، سریع‌تر از افزونه است. فایل .htaccess را از طریق فایل‌منیجر هاست یا FTP باز کنید و خطوط زیر را پیش از بخش # BEGIN WordPress اضافه کنید. ویرایش این فایل در پنل‌هایی مثل هاست سی‌پنل با فایل‌منیجر به‌سادگی ممکن است:
# ریدایرکت 301 در آپاچی — به فایل .htaccess اضافه کنید
# این خطوط را پیش از بخش «# BEGIN WordPress» قرار دهید

# ۱) انتقال یک صفحه‌ی مشخص به صفحه‌ی جدید
Redirect 301 /old-page/ https://example.com/new-page/

# ۲) انتقال کل دامنه‌ی قدیمی به دامنه‌ی جدید
Redirect 301 / https://newdomain.com/

# ۳) انتقال گروهی با الگو (مثلاً همه‌ی آدرس‌های /blog/ به /news/)
RedirectMatch 301 ^/blog/(.*)$ https://example.com/news/$1
Apache

هشدار: یک اشتباه کوچک، کل سایت را از کار می‌اندازد

فایل .htaccess به فاصله و سینتکس بسیار حساس است؛ یک خطای کوچک می‌تواند خطای 500 و از دسترس خارج‌شدن کل سایت را ایجاد کند. حتماً پیش از ویرایش یک نسخه‌ی پشتیبان از همین فایل بگیرید. توجه کنید که وب‌سرور Nginx اصلاً از htaccess پشتیبانی نمی‌کند و ریدایرکت باید در کانفیگ سرور تعریف شود.

روش ۳: کدنویسی در فایل functions.php

اگر به ریدایرکت‌های شرطی و سفارشی نیاز دارید، می‌توانید از توابع خود وردپرس استفاده کنید. تابع wp_safe_redirect همراه با کد ۳۰۱ داخل اکشن template_redirect، آدرس‌های مشخصی را به مقصد جدید می‌فرستد. این کد را در فایل functions.php قالبِ فرزند قرار دهید تا با به‌روزرسانی قالب پاک نشود:
<?php
// ریدایرکت 301 دستی با کد — در functions.php قالبِ فرزند
add_action( 'template_redirect', 'webdade_custom_301_redirect' );

function webdade_custom_301_redirect() {
    if ( empty( $_SERVER['REQUEST_URI'] ) ) {
        return;
    }

    // مسیر قدیمی => مسیر جدید
    $redirects = array(
        '/old-page/'    => '/new-page/',
        '/old-article/' => '/blog/new-article/',
    );

    $request = untrailingslashit( strtok( $_SERVER['REQUEST_URI'], '?' ) );

    foreach ( $redirects as $from => $to ) {
        if ( $request === untrailingslashit( $from ) ) {
            // wp_safe_redirect برای آدرس‌های داخلی امن‌تر است
            wp_safe_redirect( home_url( $to ), 301 );
            exit;
        }
    }
}
PHP
نکته: برای آدرس‌های داخلی سایت، wp_safe_redirect امن‌تر از wp_redirect است، چون فقط به دامنه‌های مجاز اجازه‌ی انتقال می‌دهد. فراموش نکردن exit بعد از ریدایرکت هم ضروری است.

روش ۴: ریدایرکت خودکار خودِ وردپرس

نکته‌ی کمتر شناخته‌شده این است که وردپرس بخشی از کار را خودکار انجام می‌دهد. وقتی نامک (Slug) یک نوشته‌ی منتشرشده را تغییر می‌دهید، وردپرس نامک قدیمی را در دیتابیس نگه می‌دارد و به‌صورت خودکار آدرس قدیمی را با کد ۳۰۱ به آدرس جدید ریدایرکت می‌کند تا لینک‌های قبلی نشکنند. پس برای تغییر آدرس یک نوشته، اغلب کافی است نامک را در ویرایشگر عوض کنید و نگران 404 نباشید. برای جابه‌جایی‌های گسترده یا تغییر دامنه اما همچنان به یکی از سه روش بالا نیاز دارید.
برای راستی‌آزمایی اینکه ریدایرکت درست کار می‌کند، می‌توانید از دستور curl استفاده کنید و کد وضعیت پاسخ را ببینید:
# راستی‌آزمایی ریدایرکت 301 با curl
curl -I https://example.com/old-page/

# در خروجی باید این دو خط دیده شود:
# HTTP/1.1 301 Moved Permanently
# location: https://example.com/new-page/
Bash
برای اینکه بتوانید بهترین روش را برای موقعیت خودتان انتخاب کنید، جدول زیر سه روش اصلی را روی معیارهای کلیدی مقایسه می‌کند:
مقایسه‌ی سه روش ساخت ریدایرکت ۳۰۱ در وردپرس
معیارافزونه (Redirection)فایل htaccessکد functions.php
سطح دانش لازممبتدیمتوسطحرفه‌ای
نیاز به کدنویسینداردکمی (یک خط)دارد
سرعت اجراخوب (سطح PHP)عالی (سطح سرور)خوب (سطح PHP)
مدیریت و لاگ 404داردنداردندارد
ریسک خرابی سایتکمزیاد (حساس به سینتکس)متوسط
مناسب برای Nginxبلهخیربله
بهترین کاربردبیشتر کاربرانهاست آپاچی و حجم بالاریدایرکت‌های سفارشی
جدول مقایسه روش‌های ریدایرکت 301 در وردپرس با افزونه htaccess و کد

هاست وردپرس وب‌داده و حفظ سئو هنگام ریدایرکت

بیایید صادق باشیم: ریدایرکت ۳۰۱ ابزار قدرتمندی است، اما خالی از عیب نیست. ریدایرکت‌های زنجیره‌ای (وقتی آدرس A به B و B به C می‌رود) سرعت و سئو را کم می‌کنند؛ حلقه‌ی ریدایرکت (Redirect Loop) صفحه را کاملاً از دسترس خارج می‌کند؛ و چون مرورگرها ریدایرکت ۳۰۱ را کش می‌کنند، اگر اشتباهی ثبت شود، اصلاح آن برای کاربران سخت می‌شود. به همین دلیل پیش از ثبت انبوه ریدایرکت، حتماً نقشه‌ی آدرس‌ها را با دقت بررسی کنید.

نقل‌قول از منبع معتبر

به نوشته‌ی مستندات رسمی توسعه‌دهندگان وردپرس، تابع wp_old_slug_redirect() «نامک قدیمی را به پیوند یکتای درست هدایت می‌کند و تلاش می‌کند آدرس فعلی را از میان نامک‌های گذشته پیدا کند.» همین یعنی وردپرس به‌صورت توکار از شکستن لینک‌ها هنگام تغییر آدرس جلوگیری می‌کند. منبع: WordPress Developer — wp_old_slug_redirect().
در تجربه‌ی عملی ما در وب‌داده، بسیاری از افت‌های رتبه پس از تغییر آدرس، نه به‌خاطر اشتباه در خود ریدایرکت، بلکه به‌خاطر کندی یا در دسترس نبودن سرور در زمان خزش دوباره‌ی گوگل رخ می‌دهد. وقتی گوگل آدرس قدیمی را دوباره می‌خزد و سرور کند پاسخ می‌دهد، انتقال اعتبار به آدرس جدید با تأخیر و نقص انجام می‌شود. زیربنای میزبانی پایدار اینجا نقش کلیدی دارد:
✅ هاست وردپرس وب‌داده روی زیرساخت نسل جدید HPE (Gen11 و Gen10) با پاسخ سریع برای خزش روان موتورهای جستجو.
✅ دیتاسنترهای ایران، هلند و آلمان برای انتخاب نزدیک‌ترین لوکیشن به مخاطب و کاهش تأخیر.
✅ پشتیبانی کامل از آپاچی و دسترسی به فایل htaccess برای ریدایرکت سطح سرور.
✅ پشتیبانی فنی ۲۴ ساعته برای کمک هنگام تغییر آدرس و رفع خطاهای ریدایرکت.
اگر می‌خواهید تغییر آدرس‌ها بدون افت رتبه انجام شود، در کنار ریدایرکت درست به سروری سریع و پایدار هم نیاز دارید. می‌توانید نکات بیشتر را در راهنمای حفظ سئو هنگام انتقال سرور بخوانید و پلن‌های هاست سی‌پنل وب‌داده را بررسی کنید.

پرسش‌های پرتکرار درباره ریدایرکت ۳۰۱ در وردپرس

تفاوت ریدایرکت ۳۰۱ و ۳۰۲ چیست؟

ریدایرکت ۳۰۱ یعنی انتقال «دائمی» و تقریباً تمام اعتبار سئوی صفحه‌ی قدیمی را به آدرس جدید منتقل می‌کند. ریدایرکت ۳۰۲ (و ۳۰۷) یعنی انتقال «موقت» و برای زمانی به‌کار می‌رود که قرار است بعداً به آدرس اصلی برگردید. اگر تغییر آدرس همیشگی است، حتماً از ۳۰۱ استفاده کنید.

خیر، اگر درست انجام شود. ریدایرکت ۳۰۱ دقیقاً برای حفظ سئو هنگام تغییر آدرس طراحی شده و اعتبار صفحه را منتقل می‌کند. آسیب زمانی رخ می‌دهد که ریدایرکت‌های زنجیره‌ای یا حلقه‌ای بسازید یا همه‌چیز را به‌جای صفحه‌ی مرتبط به صفحه‌ی اصلی بفرستید.

افزونه‌ی رایگان Redirection با بیش از ۲ میلیون نصب فعال محبوب‌ترین گزینه است و علاوه بر ساخت ریدایرکت، خطاهای 404 را هم ردیابی می‌کند. اگر افزونه‌ی سئویی مثل Rank Math یا AIOSEO نصب دارید، می‌توانید از بخش مدیریت ریدایرکت همان افزونه استفاده کنید و افزونه‌ی جداگانه نصب نکنید.

نه همیشه. وقتی فقط نامک یک نوشته‌ی منتشرشده را تغییر می‌دهید، وردپرس به‌صورت خودکار آدرس قدیمی را با کد ۳۰۱ به آدرس جدید ریدایرکت می‌کند. اما برای تغییر دامنه، جابه‌جایی گروهی صفحات یا حذف یک صفحه، باید ریدایرکت را خودتان با افزونه، htaccess یا کد بسازید.

اگر دسترسی به فایل‌ها دارید، سرعت برایتان مهم است و سایت روی آپاچی اجرا می‌شود، روش htaccess سریع‌تر است چون در سطح سرور اجرا می‌شود. اما اگر با کد راحت نیستید یا تعداد زیادی ریدایرکت دارید که باید مدیریت شوند، افزونه ساده‌تر و کم‌ریسک‌تر است.

حلقه‌ی ریدایرکت زمانی رخ می‌دهد که آدرس A به B و دوباره B به A (یا به خودش) ریدایرکت شود؛ نتیجه پیام «صفحه به‌درستی ریدایرکت نشد» و از دسترس خارج‌شدن صفحه است. برای رفع آن، قانون‌های ریدایرکت متناقض را در افزونه یا فایل htaccess پیدا و حذف کنید و کش مرورگر را پاک کنید.

می‌توانید آدرس قدیمی را در مرورگر باز کنید و ببینید به آدرس جدید می‌رود. برای بررسی دقیق‌تر، با دستور curl -I یا تب Network مرورگر، کد وضعیت پاسخ را ببینید؛ باید «301 Moved Permanently» و هدر location با آدرس جدید نمایش داده شود.

هر ریدایرکت کمی تأخیر اضافه می‌کند، چون مرورگر باید یک درخواست اضافی بفرستد. یک ریدایرکت ساده تأثیر محسوسی ندارد، اما ریدایرکت‌های زنجیره‌ای (چند ریدایرکت پشت‌سرهم) سرعت را به‌وضوح کم می‌کنند. ریدایرکت سطح سرور (htaccess) معمولاً سریع‌تر از ریدایرکت افزونه است.

جمع‌بندی و قدم بعدی شما

در این راهنما دیدیم که ریدایرکت ۳۰۱ راه استاندارد برای تغییر دائمی آدرس صفحه‌ها در وردپرس است و اگر درست انجام شود، هم کاربر را بدون خطای 404 به مقصد می‌رساند و هم اعتبار سئوی صفحه را حفظ می‌کند. سه روش اصلی را گام‌به‌گام مرور کردیم: افزونه‌ی Redirection برای سادگی، فایل htaccess برای سرعت سطح سرور، و کدنویسی در functions.php برای موارد سفارشی. همچنین دیدیم که وردپرس هنگام تغییر نامک خودش ریدایرکت می‌سازد و صادقانه به معایبی مثل ریدایرکت زنجیره‌ای و حلقه‌ای اشاره کردیم.

جمع‌بندی سریع

✅ برای تغییر دائمی همیشه از کد ۳۰۱ استفاده کنید، نه ۳۰۲.
✅ پیش از هر تغییری از سایت و فایل htaccess بکاپ بگیرید.
✅ هر آدرس قدیمی را به صفحه‌ی مرتبط بفرستید، نه صفحه‌ی اصلی.
✅ از ریدایرکت زنجیره‌ای و حلقه‌ای بپرهیزید و نتیجه را با curl بررسی کنید.
در صورتی که سوالی داشتید می‌توانید در بخش نظرات با ما در ارتباط باشید.
وب داده
وب داده

جدید ترین مطالب آموزشی و کاربردی را در اینجا بخوانید !
ما با بهره‌گیری از دانش روز و تجربه متخصصان حوزه فناوری، مجموعه‌ای از آموزش‌های کاربردی و مقالات تخصصی را گردآوری کرده‌ایم که هر یک، پاسخی دقیق به پرسش‌های شماست. ؛ از مفاهیم پایه تا پیچیده‌ترین تکنیک‌های حرفه‌ای. اینجا، دانش با زبانی ساده اما عمیق در اختیار شما قرار می‌گیرد.

مقاله‌ها: 86
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *