نحوه رفع خطای 405 Method Not Allowed وردپرس

فهرست مطالب

معرفی خطا 405 در وردپرس

احتمالاً تا به حال وقتی سعی کردید صفحه‌ای را باز کنید، به جای محتوا با متن مثل “405 Method Not Allowed” یا “HTTP 405 Error” مواجه شده‌اید. این یعنی سرور درخواست شما را دیده اما آن روش HTTP (مانند GET یا POST) را قبول نکرده است. این خطا معمولاً در صفحاتی مثل فرم تماس یا ورود رخ می‌دهد، مخصوصا وقتی متد POST استفاده کرده‌اید اما سرور محدودش کرده.


405 Method Not Allowed یعنی چه؟

این کد پاسخ از نوع 4xx است که نشان می‌دهد درخواست نادرست نیست، بلکه روش انتخاب‌شده برای ارسال داده توسط سرور پشتیبانی نمی‌شود. تصور کنید دکمه‌ای می‌زنید که روی سایت تعریف نشده – به همین شکل سرور از انجامش امتناع می‌کند.


چرا این خطا در وردپرس مهم می‌شود؟

چون وردپرس برای عملکرد دقیق نیاز به متدهای خاص (GET، POST، PUT) دارد. وقتی افزونه‌ای یا تغییر تنظیمات، یکی از اینها را بلاک می‌کند، عملکرد مشکلاتی مثل ثبت نام یا ارسال فرم را با خطا همراه می‌کند.


علل رایج خطا

آدرس یا متد HTTP اشتباه
گاهی URL اشتباه تایپ شده یا دستیابی به صفحه‌ای انجام شده که متد POST لازم دارد ولی از GET استفاده شده و سرور آن را قبول نمی‌کند.

افزونه یا قالب تداخلی
افزونه‌هایی که متدها را دستکاری می‌کنند یا قالبی که فرم‌ها را override کرده، می‌تواند باعث شود سرور درخواست را رد کند.

بروزرسانی ناقص وردپرس
اگر وردپرس، افزونه یا قالب به‌روز شده و نیمه‌کاره رها شده باشد، ممکن است متد POST/GET جدید را پشتیبانی نکند و خطای 405 بدهد.

پیکربندی اشتباه در سرور یا .htaccess
گاهی قوانین Rewrite یا تنظیمات مد Apache روش HTTP خاصی را بلاک می‌کنند. برای مثال در mod_allowmethods این رفتار رایج است.

تداخل در XML‑RPC
اگر XML‑RPC غیر فعال شده باشد یا سرور امنیتی بلاک کرده باشد، اتصال REST یا ارسال پست خارجی 405 خطای Method Not Allowed می‌دهد.


چگونه خطا را تست کنیم؟

بررسی آدرس و متد
آیا URL درست است؟ آیا متد صحیح (GET/POST) در فرم استفاده شده؟ اولین کاری اینها هستند.

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

بررسی XML‑RPC
به Settings → Writing بروید و اگر گزینه XML‑RPC دارید، مطمئن شوید فعال است یا از ارائه‌دهنده‌تان برای باز کردن دسترسی بپرسید.


راهکارهای عملی رفع خطا

۱. بررسی URL و متد HTTP
دوباره آدرس را چک کنید و اطمینان حاصل کنید فرم‌ها متد درست GET یا POST را دارند.

۲. برگشت به نسخه قبلی وردپرس
اگر بعد از آپدیت خطا ظاهر شد، بکاپ قبلی را بازگردانید؛ یا از افزونه‌هایی مثل Core Rollback استفاده کنید.

۳. غیرفعال‌سازی افزونه‌ها/قالب
افزونه‌ها و قالب را خاموش و روش قطع به قطع فعال کنید تا متصدی خطا را بیابید.

۴. اصلاح فایل .htaccess
قوانین HTTP در .htaccess ممکن است متد POST را مسدود کنند. اگر دستور AllowMethods یا Rewrite عجیب دارید، آن را کامنت کنید.

# بررسی کنید خطوط مانند زیر نباشد:
<LimitExcept GET POST>
  Deny from all
</LimitExcept>

۵. فعال‌سازی Debug Mode و مشاهده لاگ‌ها
در wp-config.php، این خطوط را اضافه یا اصلاح کنید:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

حالا فایل wp-content/debug.log را چک کنید برای ارورهای مرتبط.

۶. بررسی تنظیمات XML‑RPC
اگر سرویس‌هایی مثل Jetpack یا موبایل استفاده می‌کنید، XML‑RPC باید فعال باشد. اگر هاست اجازه نمی‌دهد، با پشتیبانی صحبت کنید.


روش‌های پیشرفته‌تر

بررسی تنظیمات سرور (Apache/Nginx)
دنبال دستوراتی مثل AllowMethods یا تنظیمات Nginx مشابه باشید که متدها را محدود می‌کنند.

بررسی سطح دسترسی فایل‌ها
نوع فایل‌ها و پوشه‌ها باید با تنظیمات سرور همخوانی داشته باشد؛ معمولاً 644 برای فایل‌ها و 755 برای پوشه‌ها مناسب است.

تماس با پشتیبانی هاست
اگر راهکارهای بالا بی‌نتیجه ماند، ممکن است مشکل سمت سرور باشد، پس با پشتیبانی صحبت کنید.


نکات امنیتی حین رفع خطا

تست روی سایت staging
همه تغییرات را ابتدا روی سایت تست تجربه کنید، نه مستقیم در سایت اصلی.

بدون غیرفعال‌کردن دائمی فایروال
فایروال‌ها و WAFها را فقط برای تست خاموش کنید، نه برای همیشه؛ چون خطر امنیتی ایجاد می‌کنند.


جمع‌بندی

خطای 405 Method Not Allowed یعنی روش HTTP نا‌مجاز بوده و معمولاً ناشی از اشتباه در متد فرم، افزونه یا تغییرات اخیر است. راهکارها:

  1. بررسی URL
  2. بازگشت آپدیت
  3. غیرفعال‌سازی افزونه/قالب
  4. اصلاح .htaccess
  5. Debug Mode
  6. رفع مشکلات XML‑RPC
    اگر باز هم مشکل بود، سراغ تنظیمات سرور یا پشتیبانی بروید.

سؤالات متداول (FAQs)

1. آیا خطای 405 فقط در فرم‌ها ظاهر می‌شود؟
خیر، ممکن است در هر مسیر HTTP (GET, POST, PUT, DELETE) رخ دهد، اما معمولاً در فرم‌های ثبت نام یا ورود شایع است.

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

3. .htaccess من شامل AllowMethods نیست، باز هم احتمال خطا هست؟
بله، ممکن است از تنظیمات دیگر مانند mod_security یا دستورهای Nginx استفاده کنید.

4. چرا خطا فقط در XML‑RPC رخ می‌دهد؟
چون ممکن است هاست برای امنیت این سرویس را مسدود کرده باشد—XML‑RPC برای REST API ضروری است.

5. بعد از فعال‌سازی Debug Mode فایل لاگ را کجا ببینم؟
فایل wp-content/debug.log شامل خطاهاست. اگر چیزی یافتید، پیام یا کد خطای مرتبط را بررسی کنید.