وردپرس پشت ریورس پروکسی

وردپرس (wordpress) یه باهوش احمقه

باهوشه چون تا حد زیادی سئو رو میفهمه و زمانی که برای پیوندهای یکتاتون اسلش / انتخاب کنین یا نکنین، ورپرس اون یکی حالت ش رو ریدایرکت می کنه به حالتی که شما در نظر گرفتین و خب این برا سئو خوبه

اما احمقه چون ریورس پروکسی (reverse proxy) رو نمیفهمه

ریورس پروکسی چیه؟

توی سایت های بزرگ که میخوان یه وبلاگ داشته باشن و به دلایلی سئویی میخوان وبلاگ شون توی دامنه اصلی شون باشه نه ساب دامنه (مث وضعیت ما در باسلام) چیزی شبیه این

example.com/blog/

خب مسالما نمی تونن وردپرس رو کف پروژه خودشون بذارن پس از ریورس پروکسی استفاده می کنن و پروژه وردپرس جای دیگه ای از سرور هست اما آدرسش انگار جزیی از پروژه و دامنه اصلی سایت هست.

اما وردپرس نمیفهمه و همچنان فکر می کنه داره روی دامنه اصلی لود میشه.

اما شما ممکنه بگین که توی تنظیمات وردپرس آدرس سایت رو میشه تنظیم کرد، بله میشه اما وردپرس احمقه و اون آدرس رو برای ساختن آدرس های پست ها و داخل قالب استفاده می کنه اما وقتی نوبت به ریدایرکت کردن میشه به اون تنظیم و آدرس کاری نداره

و آنچه که نباید بشه میشه

اتفاقی که میوفته اینکه وقتی شما آدرس زیر رو دارین:

example.com/blog/exmple-post

و مشکل از جایی شروع میشه به هر دلیلی کاربر با آدرس زیر وارد وبلاگ تون میشه

example.com/blog/exmple-post/

وردپرس به دلیل اون هوشمندی احمقانه ش میفهمه که برا موتورهای جستجو این دو تا آدرس دوتا هستن و باید یکی شون کنه

پس میاد اسپلش / رو از آخر آدرس حذف می کنه و چون احمقانه هوشمنده آدرس وبلاگ رو جای اینکه example.com/blog/ در نظر بگیره example.com در نظر میگیره و ریدایرکت می کنه به

example.com/exmple-post

و اینجوری میشه اتفاقی که برای ما افتاد.

دیدم یهویی ترافیک ارگانیک وبلاگ مون رو به موته

نظارت روی دیتایی که توی باسلام داریم مث همیشه اینجا هم کمک کرد و سریع متوجه شدم و قبل از اینکه خیلی دیر بشه به دادش رسیدیم.

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

$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];
$_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME'];
$_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];

رو به فایل wp-config.php اضافه کردیم تا بخش احمقانه رو از هوشمندی وردپرس کم کردیم.

تو این راه حل به وردپرس میگیم احمق جان هر آدرسی که داری فک می کنی آدرس سایت هست یه پیشوندی داره که میشه روت سایت وردپرسی مون.

این اتفاق نادره اما به دلیل نادر بودنش توضیح و راه حلی هم جایی براش وجود نداره.

توی باسلام همه چیز خوب کار می کرد تا اینکه به اشتباه تنظیمات پیوند یکتا تغییر کرد و از /%postname% تبدیل شد به /%postname%/ و مشکل ریدایرکت مون برای آدرس هایی که از قبل گوگل ایندکس کرده بود پیش اومد.