چگونه 301 ریدایرکت ها را در وردپرس ایجاد کنیم: 4 روش

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

فهرست مطالب

درک ریدایرکت دائم در وردپرس

ریدایرکت دائم یا 301 یکی از مهم ترین ابزارهای سئو در وردپرس است. وقتی یک صفحه یا نوشته به آدرس جدیدی منتقل می شود، استفاده از 301 به موتورهای جستجو می گوید که این تغییر دائمی است و تمام اعتبار (link‑juice) باید به URL جدید منتقل شود. به علاوه مرورگرها این ریدایرکت را کش می کنند؛ بنابراین کاربرانی که به لینک قدیمی دسترسی دارند، به سرعت به مقصد جدید هدایت می شوند بدون اینکه خطای 404 ببینند.

در وردپرس ریدایرکت ها می توانند از چند روش مختلف اجرا شوند: از طریق فایل .htaccess در سرور Apache، از توابع داخلی PHP مثل wp_redirect() یا با افزونه های تخصصی ریدایرکت. هر کدام مزایا و معایب خاص خود را دارند؛ برای مثال، ریدایرکت های سطح سرور (htaccess) سریع ترین اجرا را دارند، در حالی که افزونه ها رابط کاربری گرافیکی فراهم می کنند و برای کاربران غیر‑فنی مناسب اند. مهم است که فقط از ریدایرکت 301 برای تغییرات دائمی استفاده کنید؛ در غیر این صورت ممکن است موتورهای جستجو نتوانند به درستی محتوای جدید را ایندکس کنند.

یک مثال عملی: فرض کنید آدرس یک پست به /old-post/ تغییر کرده و الآن در /new-post/ قرار دارد. برای افزودن ریدایرکت 301 می توانید به سادگی خط زیر را در فایل .htaccess اضافه کنید:

Redirect 301 /old-post/ /new-post/

اگر دسترسی به htaccess ندارید، می توانید در فایل functions.php تم خود از قطعه کد زیر استفاده کنید:

add_action( 'template_redirect', function() {
    if ( is_page( 'old-post' ) ) {
        wp_redirect( home_url( '/new-post/' ), 301 );
        exit;
    }
});
نوع ریدایرکترفتار موتورهای جستجوانتقال اعتبار لینککاربرد رایج
301 (دائم)به سرعت URL جدید را ایندکس می کندتقریباً 100 ٪ اعتبار منتقل می شودتغییر ساختار آدرس، حذف محتوای قدیمی
302 (موقت)آدرس جدید را موقتاً ذخیره می کندارزش لینک به صورت جزئی یا نه چندان منتقل می شودصفحات موقت، تست A/B

در هنگام پیاده سازی ریدایرکت های 301 به نکات زیر توجه کنید: ابتدا لیست تمام URLهای قدیمی را جمع آوری کنید تا از وجود ریدایرکت های خراب جلوگیری شود؛ پس از اعمال ریدایرکت، با ابزارهای تست ریدایرکت (مانند Screaming Frog) صحت وضعیت 301 را بررسی کنید؛ و در نهایت، کش سایت یا افزونه های کش را پاک کنید تا کاربران فوراً به آدرس جدید هدایت شوند. رعایت این موارد نه تنها سئوی سایت را حفظ می کند، بلکه تجربه کاربری بدون وقفه ای فراهم می سازد.

پیکربندی ریدایرکت با htaccess

فایل .htaccess در ریشهٔ نصب وردپرس شما قرار دارد و به صورت پیش فرض توسط سرور Apache خوانده می شود. برای ویرایش آن می توانید از یک کلاینت FTP مانند FileZilla یا از ابزار «File Manager» در پنل میزبانی استفاده کنید. پیش از هر تغییری، یک نسخهٔ پشتیبان از فایل اصلی بگیرید؛ این کار باعث می شود در صورت بروز خطا، بتوانید به سرعت به حالت قبلی بازگردید.

ساده ترین روش برای ایجاد یک ریدایرکت 301 (بدون تغییر مسیر موقت) استفاده از دستور Redirect 301 است. به عنوان مثال، برای انتقال صفحهٔ example.com/old-page به example.com/new-page می توانید خط زیر را به انتهای فایل .htaccess اضافه کنید:

Redirect 301 /old-page /new-page

این دستور به سرور می گوید که هر درخواست به مسیر «/old-page» را به صورت دائمی به «/new-page» هدایت کند؛ موتورهای جستجو نیز این تغییر را به سرعت ایندکس می کنند.

در صورتی که نیاز به ریدایرکت های پیچیده تری داشته باشید-مانند انتقال تمام پست های یک دسته یا تغییر دامنه-به جای Redirect می توانید از ماژول mod_rewrite و دستور RewriteRule استفاده کنید. مراحل اصلی به صورت زیر است:

  1. در بالای فایل .htaccess اطمینان حاصل کنید که خطوط زیر فعال هستند:
    RewriteEngine On
    RewriteBase /
  2. قالب ریدایرکت مورد نیاز را تعریف کنید؛ برای مثال، انتقال تمام URLهای «/blog/*» به «/articles/*»:
    RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]
  3. اگر می خواهید تمام درخواست ها را به دامنهٔ جدیدی هدایت کنید، از یک شرط (condition) استفاده کنید:
    RewriteCond %{HTTP_HOST} ^oldsite.com$ [NC]
    RewriteRule ^(.*)$ https://newsite.com/$1 [R=301,L]

پس از افزودن قوانین، حتماً آنها را تست کنید. می توانید از ابزارهای آنلاین «Redirect Checker» یا خط فرمان با دستور curl -I https://yourdomain.com/old-page استفاده کنید تا مطمئن شوید وضعیت HTTP برابر 301 برگردانده می شود. همچنین، به خاطر داشته باشید که کش مرورگر و کش سرور (مانند Cloudflare) ممکن است نتایج را مخفی کنند؛ برای آزمایش دقیق، حالت «Incognito» یا پاک سازی کش را به کار ببرید.

نوع ریدایرکتدستورمثال کاربردی
ریدایرکت سادهRedirect 301 /old /newیک صفحهٔ ثابت
ریدایرکت با الگوRewriteRule ^old/(.*)$ /new/$1 [R=301,L]انتقال یک دستهٔ پست
تغییر دامنهRewriteCond %{HTTP_HOST} ^old.com$ [NC]
RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]
مهاجرت کل سایت
مقایسهٔ کوتاه دستورات ریدایرکت در .htaccess

تنظیم ریدایرکت از طریق توابع قالب

یکی از ساده ترین روش ها برای تنظیم ریدایرکت ۳۰۱ در وردپرس، افزودن کدهای مربوطه به فایل functions.php قالب است. این فایل به عنوان یک نقطه ی مرکزی برای افزودن توابع سفارشی عمل می کند و می توانید ریدایرکت ها را بر پایه ی شرایط مختلف (مانند شناسایی صفحه یا شناسه پست) پیاده کنید. برای این کار بهتر است از تابع داخلی wp_redirect استفاده کنید؛ این تابع به صورت خودکار هدرهای مناسب را ارسال می کند و می توانید کد وضعیت HTTP را به صورت پارامتر دوم مشخص کنید (به عنوان مثال 301 برای ریدایرکت دائمی).

در ابتدا یک شرط ساده تعریف می کنیم تا وقتی کاربر به آدرس قدیمی (مثلاً /old-post/) می رسد، به آدرس جدید (/new-post/) هدایت شود. کد زیر را در انتهای functions.php قرار دهید:

if ( is_page( 'old-post' ) ) {
wp_redirect( home_url( '/new-post/' ), 301 );
exit;
}

در این مثال is_page('old-post') بررسی می کند که آیا صفحه ی فعلی همان صفحه ی موردنظر است یا خیر. توجه داشته باشید که پس از فراخوانی wp_redirect باید با exit اسکریپت متوقف شود تا از ادامه پردازش جلوگیری شود.

برای ریدایرکت های پیشرفته تر، بهتر است کد را به هوک template_redirect متصل کنید؛ این هوک دقیقاً قبل از بارگذاری قالب اجرا می شود و از تداخل با سایر پردازش ها جلوگیری می کند. نمونهٔ زیر را در functions.php اضافه کنید:

add_action( 'template_redirect', function () {
if ( is_singular( 'product' ) && get_query_var( 'product_id' ) == 42 ) {
wp_redirect( home_url( '/special-offer/' ), 301 );
exit;
}
});

در این مثال ریدایرکت فقط برای محصولی با شناسه ی ۴۲ فعال می شود. استفاده از هوک باعث می شود کد شما به صورت خودکار در زمان مناسب اجرا شود و نیازی به افزودن شرط در هر صفحه نباشد.

چند نکتهٔ کلیدی برای جلوگیری از خطاهای رایج:

  • همیشه پس از wp_redirect از exit استفاده کنید. در غیر این صورت ممکن است محتوای صفحه به طور ناخواسته نمایش داده شود.
  • از توابع شرطی وردپرس (is_page, is_singular, is_category و …) به دقت استفاده کنید. این توابع به صورت پیش فرض در زمان template_redirect در دسترس هستند.
  • اگر ریدایرکت های زیادی می نویسید، بهتر است آنها را در یک آرایه نگهداری کنید و در یک حلقه پردازش کنید؛ این کار کد را خواناتر می کند.
  • پس از اعمال تغییرات، کش مرورگر یا افزونه های کشینگ (مانند WP Super Cache) را پاک کنید تا ریدایرکت جدید بلافاصله فعال شود.
مرحلهکدهدف
۱. شرط سادهif ( is_page('old') ) { wp_redirect(...); exit; }ریدایرکت تک صفحه ای
۲. هوک template_redirectadd_action('template_redirect', function(){ ... });ریدایرکت های شرطی پیشرفته
۳. پاک سازی کشپاک سازی کش مرورگر یا افزونه های کشاعمال بلافاصله تغییرات

آزمون و مانیتورینگ ریدایرکت ها

پس از اعمال ریدایرکت 301، اولین کار بررسی صحت عملکرد آن است. برای این کار می توانید از ابزارهای آنلاین مثل Redirect Checker یا افزونه های مرورگر استفاده کنید. کافی است URL قدیمی را در کادر وارد کنید؛ سرویس سپس کد وضعیت (به طور معمول 301 Moved Permanently) و مسیر نهایی را نشان می دهد. اگر زنجیره ریدایرکت طولانی یا حلقه ای مشاهده کردید، این علامت هشدار است و باید مسیرها را به صورت مستقیم به مقصد نهایی تنظیم کنید.

در کنار ابزارهای آنلاین، اجرای دستورات خط فرمان می تواند نتایج دقیق تری بدهد. نمونه زیر با استفاده از curl وضعیت ریدایرکت را بررسی می کند:

curl -I https://example.com/old-page

خروجی شامل خط HTTP/1.1 301 Moved Permanently و هدر Location: https://example.com/new-page خواهد بود. اگر چندین هدر Location دریافت کردید، نشان دهنده زنجیره چند مرحله ای است که بهتر است به صورت یک بارگی به روزرسانی شود.

ابزارچک می کندنکته کاربردی
Redirect Checker (وب)کد وضعیت و مسیر نهاییسریع، مناسب برای تست های سطحی
cURL (خط فرمان)هدرهای کامل، زنجیره ریدایرکتقابلیت بررسی چندگانه با -L
Google Search Consoleخطاهای پوشش و ریدایرکت های خراببرای نظارت طولانی مدت روی سایت

نکته مهم دیگر، مانیتورینگ مستمر پس از انتشار ریدایرکت هاست. در Google Search Console به بخش «Coverage» مراجعه کنید و به دنبال خطای 404 یا 301 ناموفق بگردید. همچنین می توانید از افزونه های مانیتورینگ مانند Redirection استفاده کنید؛ این افزونه به صورت خودکار لاگ ریدایرکت های موفق و ناموفق را ذخیره می کند و به شما هشدار می دهد اگر تعداد خطاها به حدی برسد که نیاز به بررسی داشته باشد. به کارگیری این روش ها باعث می شود تا ریدایرکت های شما همیشه سالم بمانند و تجربه کاربری و سئوی سایت حفظ شود.

سوالات متداول

چطور یک 301 ریدایرکت با .htaccess بسازم؟

فایل .htaccess را در ریشه سایت باز کنید. خطی شبیه به RewriteRule ^old-page$ /new-page [R=301,L] اضافه کنید. مطمئن شوید ماژول mod_rewrite فعال است. سپس ذخیره کنید و با مرورگر تست کنید.

آیا می توان ریدایرکت ها را از طریق پلاگین Redirection تنظیم کرد؟

بله؛ افزونه Redirection را نصب و فعال کنید. از منوی Tools > Redirection به بخش افزودن ریدایرکت بروید. URL منبع و مقصد را وارد کنید و نوع ریدایرکت را 301 انتخاب کنید. تغییرات به صورت خودکار ذخیره می شود.

ریدایرکت دائمی در ووکامرس برای محصولات چطور کار می کند؟

برای محصولاتی که URL تغییر کرده است، شناسه محصول را در افزونه Redirection یا در .htaccess وارد کنید. از الگوی /product/old‑slug به /shop/new‑slug استفاده کنید. پس از ذخیره، ریدایرکت برای تمام بازدیدکنندگان فعال می شود.

آیا ریدایرکت های PHP به همراه شرط گذاری می توانند اعمال شوند؟

بله؛ در قالب functions.php می توانید از تابع wp_redirect استفاده کنید. ابتدا شرط مورد نیاز (مثلاً وجود متغیر GET) را بررسی کنید. سپس wp_redirect( $new_url, 301 ); و exit; را فراخوانی کنید. این روش برای ریدایرکت های پویا مناسب است.

چک لیست سریع

  • درک نقش ریدایرکت 301 برای سئو و تجربه کاربری
  • شناسایی URLهای هدف و برنامه ریزی ساختار پیوندهای جدید
  • نصب و تنظیم یک افزونه ریدایرکت ساده
  • اضافه کردن قواعد ریدایرکت به فایل .htaccess برای عملکرد بهینه
  • استفاده از توابع قالب برای ریدایرکت های شرطی
  • تست هر ریدایرکت با ابزارهای بررسی وضعیت HTTP
  • نظارت دوره ای بر ریدایرکت ها برای جلوگیری از خطاهای 404

با اعمال ریدایرکت های 301 به صورت دقیق، می توانید ارزش سئو سایت خود را حفظ کرده و کاربران را به سرعت به محتوای جدید هدایت کنید. هر روش، چه از طریق افزونه، .htaccess یا توابع قالب، ابزارهای کاربردی برای مدیریت پیوندهاست. اگر سؤال یا تجربه ای در این زمینه دارید، خوشحال می شوم آن را با ما به اشتراک بگذارید.

دیدگاهتان را بنویسید

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