English

WP Rocket اسلش انتهای آدرس‌ها را حذف می‌کند! چاره چیست؟!

3.8 / 5. تعداد رای: 4

WP Rocket اسلش انتهای آدرس‌ها را حذف می‌کند! چاره چیست؟!

چند روز پیش یکی از هم‌میهنان عزیز با من تماس گرفتند و درباره مشکلی صحبت کردند که در سایت میهن وردپرس هم وجود داشت. مشکل کار کردن آدرس‌های وردپرس حتی بدون وجود اسلش در انتهای URL که درخواست کردند روش حل این موضوع را بیان کنیم.

به عنوان مثال همین الان می‌توانید صفحه میهن پنل را به‌صورت https://mihanwp.com/mihanpanel نیز مشاهده کنید. حالا همین صفحه با https://mihanwp.com/mihanpanel/ نیز مشاهده می‌شود. اینجا باید یک ریدایرکت از https://mihanwp.com/mihanpanel به https://mihanwp.com/mihanpanel/ داشته باشیم اما ریدایرکتی اتفاق نمی‌افتد.

ارتباط این مشکل با وردپرس راکت

زمانی که وردپرس راکت را از روی سایت غیر‌فعال می‌کنیم، مشکل برطرف می‌شود و این موضوع باعث می‌شود اطمینان داشته باشیم که مشکل از وردپرس راکت است.

آیا واقعا نیاز به حل این مشکل داریم

در واقع هیچ نیازی به حل این مشکل نیست. چرا که URL‌های شما توسط گوگل به همان شکلی که در سایت شما و در سایت‌های دیگر به سایت شما لینک داده شده باشند به ربات‌های گوگل اعلام خواهند شد.

حالا گوگل هیچ آدرسی از سایت ما به‌شکل https://mihanwp.com/mihanpanel ندارد پس این موضوع باعث می‌شود این صفحه توسط گوگل به‌عنوان صفحه تکراری یا Duplicate Content شناخته نشود.

چطور مشکل را حل کنیم

اگر این موضوع روی اعصاب شماست بهتر است آن را برطرف کنید. مثل یکی از دوستان که به من می‌گفت وقتی رنگ هدر سایتم را قرمز می‌کنم، ورودی گوگل بهتری دارم. 🙂 پس با لبخندی زیبا از ایشان درخواست کردم هدر سایتش را قرمز کند تا ورودی بیشتری داشته باشد. 😀

روش اول: استفاده از افزونه

شما کافیست افزونه WP Rocket | Enforce Trailing Slash on URLs را دانلود و روی سایت خود نصب کنید. به همین راحتی! بدون نیاز به هیچ تنظیماتی، مشکل برطرف خواهد شد.

روش دوم: حل مشکل بدون نیاز به نصب افزونه

در روش دوم، کافیست وارد فایل منیجر هاست خود شوید و فایل .htaccess را ویرایش کنید. سپس کدهای زیر را به این فایل اضافه کنید و مشکل برای همیشه حل خواهد شد.

# Force trailing slash by mihanwp.com
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|xml|txt|js|php|scss|webp|mp3|avi|wav|mp4|mov)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301]

در صورتی که از NGINX استفاده می‌کنید، کد زیر را در فایل تنظیمات وب سرور اضافه کنید:

# Force Trailing Slash (less REST API calls and files)

if ($request_uri !~ "^/wp-json") {
        rewrite ^([^.]*[^/])$ $1/ permanent;
}

اگر شما آدرس‌های پست خود را بدون اسلش در نظر گرفته‌اید، برای حذف اسلش از انتهای آدرس در انجین ایکس، از کد زیر استفاده کنید:

# Remove Trailing Slash (less REST API calls and files)

if ($request_uri !~ "^/wp-json") {
        rewrite ^/(.*)/$ /$1 permanent;
}

هرچند در هر صورت طبق گفته سایت وردپرس راکت شما نیازی به حل این مشکل نخواهید داشت چرا که افزونه‌های سئو با استفاده از canonical به آدرس اصلی لینک می‌دهند و این موضوع باعث Duplicate Content در سایت شما نخواهد شد.

به همین راحتی! موفق باشید.

نکته خاصی هست که این مقاله رو تکمیل‌تر کنه؟

  1. U334398 ۱۲ آذر ۱۴۰۲

    سلام و خسته نباشید
    و با تشکر از آموزش هاتون
    من یک مشکلی دارم در همین مورد ممنون میشم اگر بتونید کمک کنید
    من در انتهای نامک سایتم در صفحات اسلش وجود داره ولی وقتی بدون اسلش میزنی ریدایرکت نمیشه به نامک اسلش دار و بدون اسلش نمایش داده میشه
    فکر میکنم این موضع باعث میشه برای هر صفحه 2 عدد url وجود داشته باشه
    این موضوع چطور قابل حله؟
    تشکر

  2. U16652 ۲۱ مهر ۱۳۹۹

    سلام
    ممنون که راه حل این مشکل رو پیدا کردین. اما من تنظیمات لینک ها رو بدون اسلش انتها گذاشتم و این کدی که دادین اجبار به گذاشتن اسلش میکنه. نمیشه کد رو طوری تغییر بدین که ریدایرکت به حالت بدون اسلش داشته باشه؟ ( منظورم اینه که کلا اسلش رو از ته لینکها برداره و اگه کسی اسلش اضافه کرد ریدایرکت بشه به حالت بدون اسلش )

    • تیم پشتیبانی تیم پشتیبانی ۲۱ مهر ۱۳۹۹

      با سلام
      نه متاسفانه ساختار کد به شکلی هست که بدون اسلش ارور ۵۰۰ دریافت میکنید. خط آخر رو مطالعه بفرمایید

      • U16652 ۲۱ مهر ۱۳۹۹

        سلام . از صبح درگیر این موضوع بودم که بالاخره یه راه پیدا کردم. اونم استفاده از کد زیر هستش:
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [R=301,L]
        این کد رو به اول فایل htaccess اضافه کردم و کار میکنه. بیزحمت شما هم چک کنید و اگه دارم درست میگم و برای سایت مشکلی پیش نمیاره تاییدش کنید و به مقالتون اضافه کنید. منتظر پاسختون هستم. با تشکر

        • تیم پشتیبانی تیم پشتیبانی ۲۲ مهر ۱۳۹۹

          سلام اگر خطای ۵۰۰ ایجاد نمیکنه و کار میکنه پس مشکلی نداره. ساختار کد مشکلی ندارد.