رفع خطای ریدایرکت 301 صفحه 1 در صفحه‌بندی آرشیو وردپرس

رفع مشکل ریدایرکت 301 صفحه 1 در صفحه‌بندی آرشیو وردپرس

آیا تا به حال متوجه شده‌اید که در صفحه بندی آرشیو وردپرس Pagination (دسته‌بندی‌ها، برچسب‌ها یا آرشیو نویسنده)، لینک مربوط به صفحه اول به آدرسی مانند category/page/1/ اشاره می‌کند و سپس این آدرس با یک ریدایرکت 301 به آدرس اصلی دسته‌بندی (مانند category/) هدایت می‌شود؟ این مشکل که به مشکل ریدایرکت صفحه 1 در صفحه‌بندی آرشیو وردپرس معروف است، یک اشکال فنی رایج در بسیاری از قالب‌های غیراستاندارد یا قدیمی است. این ریدایرکت اضافی نه تنها باعث افزایش زمان بارگذاری صفحه می‌شود، بلکه با ایجاد redirect chains (زنجیره‌های ریدایرکت) و تأثیر بر canonical URL، می‌تواند تأثیر منفی بر سئو وب‌سایت شما بگذارد. در این مقاله از مجموعه مقالات آموزشی وردپرس، به بررسی کامل این مشکل پرداخته و کد کاربردی و ابزار لازم برای رفع خطای ریدایرکت 301 صفحه اول در page 1 redirect و pagination archive را به شما آموزش می‌دهیم.

دلیل ایجاد ریدایرکت 301 اضافی در صفحه‌بندی و تأثیر آن بر سئو

در ساختار استاندارد وردپرس، آدرس اصلی هر آرشیو (مانند یک دسته‌بندی یا برچسب) دقیقاً معادل با همان slug است. برای مثال، آدرس دسته‌بندی “اخبار” به صورت example.com/news/ است. با این حال، تابع paginate_links() در هسته وردپرس، لینک مربوط به صفحه اول را به صورت /page/1/ تولید می‌کند. این در حالی است که صفحه اول آرشیو همان آدرس اصلی است و نیازی به این بخش اضافی در URL ندارد. از سوی دیگر، وردپرس به صورت خودکار برای آدرس‌هایی که شامل /page/1/ هستند، یک ریدایرکت 301 به آدرس اصلی (بدون /page/1/) ایجاد می‌کند. این ریدایرکت اضافی باعث می‌شود:

  • افزایش زمان بارگذاری صفحه به دلیل یک ریدایرکت اضافی
  • ایجاد زنجیره ریدایرکت (redirect chain) در برخی شرایط، به ویژه وقتی سایت پشت CDN یا پراکسی قرار دارد
  • اتلاف بودجه خزش (crawl budget) موتورهای جستجو
  • تأثیر منفی بر canonical URL صفحات آرشیو و کاهش اعتبار سئو
  • ایجاد محتوای تکراری در دید موتورهای جستجو

این مشکل در قالب‌های قدیمی وردپرس یا قالبی که به صورت استاندارد کدنویسی نشده است، بیشتر دیده می‌شود. همچنین وب‌سایت‌هایی که از صفحه‌بندی سفارشی یا query های سفارشی در آرشیوها استفاده می‌کنند، بیشتر در معرض این اشکال هستند.

راهکار حل مشکل ریدایرکت صفحه 1 در صفحه‌بندی آرشیو

برای رفع مشکل ریدایرکت 301 صفحه 1 در صفحه‌بندی آرشیو وردپرس، بهترین راهکار این است که از تولید لینک‌های حاوی /page/1/ توسط تابع paginate_links() جلوگیری کنیم. با این کار، لینک صفحه اول مستقیماً به آدرس اصلی آرشیو اشاره می‌کند و دیگر نیازی به ریدایرکت نخواهد بود. این روش نسبت به غیرفعال کردن کامل redirect_canonical که می‌تواند عوارض جانبی داشته باشد، بسیار دقیق‌تر و امن‌تر است. کد ارائه شده در این مقاله با استفاده از hook یا فیلتر اختصاصی وردپرس به نام paginate_links، به صورت هوشمندانه رشته page/1/ را از لینک‌های صفحه‌بندی حذف می‌کند. این روش کاملاً استاندارد بوده و با تمامی نسخه‌های وردپرس سازگار است و نیازی به نصب افزونه جداگانه ندارد. همچنین با افزونه‌های سئو مانند Yoast SEO و Rank Math تداخلی ایجاد نمی‌کند.

کد کامل رفع خطای ریدایرکت صفحه 1 در صفحه‌بندی وردپرس

برای رفع مشکل ریدایرکت 301 در صفحه‌بندی آرشیو، کد زیر را در انتهای فایل functions.php قالب (یا قالب فرزند) خود قرار دهید. این کد وردپرس به صورت کامل آزمایش شده و استاندارد است.

/*
 * Fix Page 1 Redirect In WordPress Archive Pagination
 * Removes /page/1/ from pagination links to prevent unnecessary 301 redirects
 * Mahdi Jafarzadeh
 * https://www.wpwm.ir/
 */
add_filter('paginate_links', function ($link)
{
    $pls = strpos($link, 'page/1/');
    if ($pls !== false)
    {
        $link = substr($link, 0, $pls);
    }
    return $link;
});

نحوه عملکرد کد به صورت گام به گام

این کد با استفاده از سیستم هوک‌ها و فیلترهای وردپرس، فرایند تولید لینک‌های صفحه‌بندی را تغییر می‌دهد. در ادامه، نحوه عملکرد هر بخش را به صورت دقیق بررسی می‌کنیم:

  1. خط ۶ – افزودن فیلتر به paginate_links: با استفاده از تابع add_filter()، یک فیلتر به هوک paginate_links اضافه می‌کنیم. این هوک تمام لینک‌های تولید شده توسط تابع paginate_links() را در اختیار ما قرار می‌دهد تا بتوانیم روی آن‌ها تغییرات لازم را اعمال کنیم.
  2. خط ۷ – تعریف تابع ناشناس: یک تابع ناشناس (Anonymous Function) تعریف می‌کنیم که یک پارامتر $link (همان لینک تولید شده) را دریافت کرده و پس از اعمال تغییرات، آن را بازمی‌گرداند.
  3. خط ۸ – جستجوی عبارت page/1/: با استفاده از تابع strpos()، موقعیت عبارت page/1/ را درون لینک جستجو می‌کنیم. این تابع اگر عبارت مورد نظر را پیدا کند، موقعیت آن را برمی‌گرداند و در غیر این صورت false بازمی‌گرداند.
  4. خط ۹ – بررسی وجود عبارت: با یک شرط if بررسی می‌کنیم که آیا عبارت page/1/ در لینک وجود دارد یا خیر. اگر وجود داشته باشد (!== false)، وارد مرحله بعد می‌شویم.
  5. خط ۱۱ – حذف عبارت از لینک: با استفاده از تابع substr()، بخشی از لینک را از ابتدا تا شروع عبارت page/1/ جدا می‌کنیم. به این ترتیب، /page/1/ و تمام محتویات بعد از آن از لینک حذف می‌شود.
  6. خط ۱۳ – بازگشت لینک اصلاح شده: در نهایت، لینک اصلاح شده (که دیگر حاوی /page/1/ نیست) به عنوان خروجی تابع بازگردانده می‌شود و در خروجی نهایی صفحه‌بندی قرار می‌گیرد.

با این مکانیسم، لینک صفحه اول دیگر به صورت /page/1/ تولید نمی‌شود و مستقیماً به آدرس اصلی آرشیو اشاره می‌کند و در نتیجه ریدایرکت 301 اضافی حذف می‌شود.

نکات مهم

در این بخش، به نکات کلیدی و مهم درباره رفع مشکل ریدایرکت صفحه 1 در صفحه‌بندی وردپرس اشاره می‌کنیم که باید به آن‌ها توجه داشته باشید:

  • محل قرارگیری کد: حتماً کد را در انتهای فایل functions.php قالب فرزند قرار دهید تا با آپدیت قالب اصلی، تغییرات شما از بین نرود. اگر از قالب فرزند استفاده نمی‌کنید، حتماً یک قالب فرزند ایجاد کنید.
  • تست پس از اعمال کد: پس از افزودن کد، حتماً یک صفحه آرشیو (دسته‌بندی یا برچسب) را در مرورگر باز کنید و لینک صفحه اول را بررسی کنید. همچنین از ابزارهای بررسی سئو تکنیکال مانند Ahrefs یا Screaming Frog برای تأیید عدم وجود ریدایرکت 301 استفاده کنید.
  • تداخل با افزونه‌های سئو: این کد با افزونه‌های سئو مانند Yoast SEO و Rank Math تداخلی ندارد، زیرا صرفاً لینک‌های خروجی paginate_links را اصلاح می‌کند و به canonical URL دست نمی‌زند. با این حال، پس از اعمال کد، بهتر است کش وب‌سایت خود را پاک کنید.
  • مشکل ریدایرکت در سرورهای دارای CDN: اگر وب‌سایت شما از CDN یا پراکسی مانند Cloudflare استفاده می‌کند، این کد می‌تواند از ایجاد زنجیره ریدایرکت و تغییر پروتکل HTTP به HTTPS جلوگیری کند.
  • تأثیر بر سئو: با حذف این ریدایرکت اضافی، بودجه خزش موتورهای جستجو بهینه‌تر مصرف می‌شود و canonical URL صفحات آرشیو به درستی تنظیم می‌گردد. این موضوع می‌تواند به بهبود رتبه سئو وب‌سایت شما کمک کند.
  • رفع مشکل در صفحه اول سایت: اگر صفحه اصلی سایت شما (homepage) به صورت آرشیو تنظیم شده باشد (یعنی آخرین مطالب را نمایش دهد)، این کد برای لینک‌های صفحه‌بندی صفحه اصلی نیز مؤثر خواهد بود و از ایجاد ریدایرکت برای /page/1/ جلوگیری می‌کند.
  • سازگاری با وردپرس: این کد با تمامی نسخه‌های وردپرس از جمله جدیدترین نسخه (7.x) کاملاً سازگار است و نیازی به به‌روزرسانی ندارد.

جمع‌بندی

این مشکل که در بسیاری از قالب‌های قدیمی و غیراستاندارد دیده می‌شود، می‌تواند با ایجاد ریدایرکت‌های اضافی و تأثیر منفی بر canonical URL، به سئو وب‌سایت شما آسیب برساند. با استفاده از کد ارائه شده در این مقاله، به راحتی می‌توانید این مشکل را برطرف کرده و از شر ریدایرکت‌های 301 مزاحم خلاص شوید. این راهکار کاملاً استاندارد، سبک و بدون نیاز به نصب افزونه است.

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

نظر یا سوال شما درباره این کد

اگر نظر یا سوالی درباره این کد دارید بنویسید، ما در سریعترین زمان بررسی می‌کنیم و جواب شما رو میدیم.

ایمیل شما منتشر نخواهد شد.
اولین نفری باشید که نظر می دهد!

مقالات آموزش و نکات وردپرس