
رفع خطای Forbidden 403 در وردپرس، هاست و سرور
مقدمه:
خطای 403 Forbidden زمانی نمایش داده میشود که وبسرور درخواست مرورگر را دریافت و درک کرده، اما اجازه نمایش صفحه، فایل یا پوشه موردنظر را نمیدهد. برای رفع خطای Forbidden 403 در وردپرس، هاست و سرور ابتدا باید مشخص کنید مشکل فقط در یک نشانی دیده میشود یا کل سایت را درگیر کرده است. سپس میتوان مجوز و مالکیت فایلها، فایل .htaccess، افزونههای امنیتی، فایروال و تنظیمات Apache یا Nginx را بررسی کرد.پیش از هر تغییری، از فایلهای سایت و پایگاه داده نسخه پشتیبان تهیه کنید. بهتر است هر اصلاح را جداگانه انجام دهید و نتیجه را بررسی کنید تا علت واقعی خطا مشخص شود.
فهرست مطالب
- خطای 403 Forbidden چیست؟
- تفاوت خطای 403 با خطاهای 401، 404 و 500
- اقدامات ضروری پیش از رفع خطا
- تشخیص سریع محل ایجاد خطای 403
- دلایل خطای 403 در وردپرس و هاست
- مراحل رفع خطای Forbidden 403
- بررسی خطا در Apache و Nginx
- بررسی WAF، ModSecurity و CDN
- جلوگیری از تکرار خطای 403
- سؤالات متداول
خطای 403 Forbidden چیست؟
کد وضعیت HTTP 403 به این معناست که سرور درخواست را دریافت و تفسیر کرده است، اما بر اساس مجوزها یا قوانین امنیتی از اجرای آن خودداری میکند. بنابراین، این خطا معمولاً نشانه قطع بودن اینترنت یا پیدا نشدن دامنه نیست؛ بلکه یکی از لایههای سایت یا سرور عمداً دسترسی را رد کرده است.
خطا ممکن است با پیامهای مختلفی نمایش داده شود:
403 ForbiddenAccess DeniedYou don't have permission to access this resourceHTTP Error 403- صفحه سفارشی مسدودشدن دسترسی
ظاهر پیام بهتنهایی علت خطا را مشخص نمیکند. برای تشخیص دقیق باید دامنه اثر مشکل، تغییرات اخیر و گزارش خطای وبسرور بررسی شود.
اگر مشخص نیست خطا از وردپرس، هاست یا تنظیمات سرور ایجاد شده، کارشناسان شرکت تجارت الکترونیک نوژن میتوانند بر اساس لاگها، نوع وبسرور و تغییرات اخیر، مسیر عیبیابی مناسب را بررسی کنند.
تفاوت خطای 403 با خطاهای 401، 404 و 500
| کد خطا | مفهوم معمول | نقطه شروع بررسی |
|---|---|---|
| 401 | احراز هویت لازم است یا اطلاعات ورود پذیرفته نشده است | رمز عبور، نام کاربری، هدر Authorization و تنظیمات حفاظت مسیر |
| 403 | درخواست معتبر است، اما اجازه دسترسی داده نمیشود | Permission، مالکیت، WAF، افزونه امنیتی و تنظیمات وبسرور |
| 404 | فایل یا صفحه موردنظر پیدا نشده است | نشانی صفحه، پیوند یکتا، Rewrite و وجود فایل |
| 500 | هنگام اجرای برنامه یا تنظیمات سرور خطای داخلی رخ داده است | گزارش PHP، افزونهها، قالب و فایلهای پیکربندی |
مطالعه بیشتر: رفع خطای Internal Server Error 500
پیش از تغییر تنظیمات چه کارهایی انجام دهیم؟
تهیه نسخه پشتیبان
از فایلهای سایت، فایلهای پیکربندی و پایگاه داده یک نسخه پشتیبان قابلبازیابی تهیه کنید. داشتن فایل بکاپ کافی نیست؛ باید بدانید در صورت ایجاد اختلال چگونه آن را بازگردانید.
ثبت تغییرات اخیر
بررسی کنید خطا بعد از کدام اتفاق ایجاد شده است:
- نصب یا بهروزرسانی افزونه
- تغییر قالب وردپرس
- ویرایش فایل
.htaccess - انتقال سایت به هاست جدید
- فعالکردن CDN یا فایروال
- تغییر تنظیمات دامنه یا زیردامنه
- تغییر Permission یا مالکیت فایلها
- به روزرسانی پیکربندی Apache یا Nginx
زمان تقریبی شروع مشکل نیز باید ثبت شود تا بتوان آن را با گزارشهای سرور تطبیق داد.
تغییر یک عامل در هر مرحله
چند تنظیم را هم زمان تغییر ندهید. تغییر همزمان Permission، افزونهها و فایلهای پیکربندی ممکن است سایت را موقتاً باز کند، اما علت اصلی را پنهان خواهد کرد.
استفاده از Permission برابر 777 راهحل عمومی خطای 403 نیست و میتواند دسترسی ناخواستهای برای سایر کاربران یا فرایندهای سرور ایجاد کند.
تشخیص سریع محل ایجاد خطای 403
دامنه اثر خطا را مشخص کنید
اگر کل سایت خطای 403 میدهد، این موارد محتملتر هستند:
- مالکیت نادرست فایلها
- مجوز دسترسی اشتباه
- نبود فایل
index.phpیاindex.html - تنظیم اشتباه Document Root
- محدودشدن حساب هاست
- وجود قانون مسدودکننده در وبسرور
اگر فقط پیشخوان وردپرس با خطا مواجه است، افزونه امنیتی، مسدودشدن IP، قوانین WAF یا تنظیمات مسیر wp-admin را بررسی کنید.
اگر فقط تصاویر یا فایلهای پوشه uploads باز نمیشوند، مجوز پوشه، مالکیت، Hotlink Protection و فایل .htaccess داخل همان پوشه اهمیت بیشتری دارند.
سایت را با شبکه دیگری آزمایش کنید
اگر سایت با اینترنت موبایل باز میشود، اما با اینترنت شرکت یا منزل خطای 403 دارد، احتمال دارد IP شما توسط فایروال، افزونه امنیتی، CDN یا سامانه جلوگیری از حملات مسدود شده باشد.
باز شدن سایت در حالت خروج از حساب و مسدودشدن آن بعد از ورود نیز میتواند به کوکی، نقش کاربری، قوانین کش یا محدودیتهای افزونه مرتبط باشد.
کد پاسخ و لاگها را بررسی کنید
در ابزار Network مرورگر، آدرس دقیق درخواست ناموفق و کد پاسخ را ببینید. پس از آن، در کنترلپنل هاست یا سرور، گزارش خطای وبسرور و WAF را در همان بازه زمانی بررسی کنید.
عبارتهای زیر میتوانند به تشخیص علت کمک کنند:
permission deniedclient denied by server configurationdirectory index forbiddenaccess forbidden by ruleModSecurity action
مطالعه بیشتر: فایروال چیست و چگونه از سرور و سایت محافظت میکند
جدول تشخیص علت خطای 403
| نشانه | علتهای محتمل | اقدام اولیه کمریسک |
|---|---|---|
| کل سایت 403 است | Permission، مالکیت، نبود فایل index یا Document Root اشتباه | بررسی لاگ، فایل index و تنظیم مسیر دامنه |
فقط wp-admin خطا دارد |
افزونه امنیتی، محدودیت IP یا قانون WAF | بررسی گزارش امنیتی و غیرفعالکردن افزونه مشکوک |
| فقط یک فایل یا پوشه مسدود است | مجوز اشتباه، قانون Deny یا Hotlink Protection | مقایسه Permission و قوانین پوشه با مسیر سالم |
بعد از تغییر .htaccess خطا ایجاد شده |
دستور ناسازگار یا Rewrite اشتباه | تهیه کپی و تغییر نام موقت فایل |
| فقط یک IP مشکل دارد | فایروال، Geo-blocking، CDN یا محدودیت نرخ درخواست | آزمایش با شبکه دیگر و بررسی رویداد امنیتی |
| بعد از انتقال هاست رخ داده است | مالکیت اشتباه، مسیر ریشه نادرست یا فایل ناقص | بررسی owner، group، Document Root و فایلهای انتقالیافته |
| فقط تصاویر 403 هستند | Hotlink Protection، Permission یا قانون داخل uploads | بررسی مستقیم URL تصویر و تنظیمات پوشه رسانه |
اگر خطا به محدودیتهای هاست، تنظیمات امنیتی یا مدیریت سرور مربوط است، میتوانید خدمات هاست، سرور مجازی و پشتیبانی فنی شرکت تجارت الکترونیک نوژن را بررسی کرده و سرویسی متناسب با سطح دسترسی و نیاز پروژه انتخاب کنید.
رفع خطای Forbidden 403 در وردپرس، هاست و سرور
مرحله اول: کش مرورگر، وردپرس و CDN را پاک کنید
ابتدا صفحه را در حالت ناشناس و با مرورگر دیگری باز کنید. اگر سایت از افزونه کش، CDN یا Reverse Proxy استفاده میکند، پس از ثبت تنظیمات فعلی، کش نشانی خطادار را پاک کنید.
کش معمولاً علت اصلی رد شدن مجوز نیست، اما ممکن است نسخه قدیمی صفحه 403 را نگهداری کند و باعث شود تصور کنید تغییرات انجامشده اثری نداشتهاند.
مرحله دوم: فایل .htaccess را بررسی کنید
در سرویسهای مبتنی بر Apache یا LiteSpeed، فایل .htaccess میتواند شامل قوانین مسدودسازی IP، محافظت از فایلها، Rewrite و دستورات افزونههای امنیتی باشد.
ابتدا یک نسخه از فایل دانلود کنید. سپس نام آن را موقتاً به نمونهای مانند زیر تغییر دهید:
.htaccess-backup
اکنون سایت را مجدداً آزمایش کنید. اگر خطا برطرف شد، احتمالاً یکی از قوانین این فایل باعث مسدودشدن دسترسی بوده است.
در وردپرس میتوانید وارد بخش «تنظیمات ← پیوندهای یکتا» شوید و بدون تغییر ساختار، دکمه ذخیره را بزنید تا قواعد پایه وردپرس مجدداً ساخته شوند. سپس قوانین امنیتی ضروری را مرحلهبهمرحله بازگردانید.
در Nginx فایل .htaccess پردازش نمیشود؛ بنابراین تغییر این فایل تأثیری بر سرور Nginx ندارد.
مرحله سوم: افزونههای وردپرس را آزمایش کنید
افزونههای امنیتی، فایروال، محدودکننده ورود، کش و مدیریت عضویت میتوانند پاسخ 403 ایجاد کنند. اگر به پیشخوان دسترسی دارید، افزونهای را که همزمان با شروع مشکل نصب یا بهروزرسانی شده غیرفعال کنید.
اگر پیشخوان باز نمیشود، از File Manager یا SFTP وارد مسیر زیر شوید:
wp-content/plugins
نام پوشه افزونه مشکوک را موقتاً تغییر دهید. اگر نمیدانید کدام افزونه عامل مشکل است، میتوان نام پوشه plugins را موقتاً تغییر داد؛ بااینحال این کار همه افزونهها را از مدار خارج میکند و ممکن است امکانات سایت موقتاً غیرفعال شوند.
بعد از آزمایش، نام پوشه را به حالت قبلی برگردانید و افزونهها را یکییکی فعال کنید.
مطالعه بیشتر: آموزش رفع خطاهای وردپرس
مرحله چهارم: مجوز فایلها و پوشهها را اصلاح کنید
در بسیاری از هاستهای لینوکسی، مقادیر رایج به شکل زیر هستند:
- پوشهها:
755 - فایلها:
644
این مقادیر یک قاعده مطلق برای تمام سرورها نیستند. مجوز مناسب به معماری هاست، نوع اجرای PHP و سیاست سرویسدهنده بستگی دارد. فایلهای حساس نیز ممکن است به دسترسی محدودتری نیاز داشته باشند.
مجوزها را بدون بررسی به صورت بازگشتی تغییر ندهید. استفاده دائمی از 777 توصیه نمیشود. اگر Permission درست به نظر میرسد ولی خطا باقی مانده است، مالکیت فایلها را بررسی کنید.
مرحله پنجم: مالکیت فایلها را کنترل کنید
مالکیت یا Ownership مشخص میکند فایل به کدام کاربر و گروه تعلق دارد. پس از انتقال دستی سایت، استخراج فایلها با کاربر root یا جابهجایی بین حسابهای مختلف، ممکن است فایلها مالک نادرستی داشته باشند.
در این حالت حتی اگر Permission ظاهراً صحیح باشد، وبسرور یا PHP نمیتواند به فایل دسترسی پیدا کند. اصلاح مالکیت معمولاً باید توسط مدیر سرور یا پشتیبانی هاست انجام شود.
مرحله ششم: فایل index و مسیر دامنه را بررسی کنید
وقتی Directory Listing غیرفعال باشد و فایل index.php یا index.html در پوشه مقصد وجود نداشته باشد، وبسرور ممکن است نمایش فهرست پوشه را با خطای 403 رد کند.
اطمینان حاصل کنید که دامنه یا زیردامنه به Document Root صحیح متصل است و فایل اصلی سایت در همان مسیر قرار گرفته است.
مرحله هفتم: Hotlink Protection را بررسی کنید
اگر فقط تصاویر یا فایلهای دانلودی 403 میگیرند، تنظیمات Hotlink Protection و قوانین Referrer را بررسی کنید. ممکن است دامنه اصلی، زیردامنه یا CDN سایت در فهرست منابع مجاز قرار نگرفته باشد.
حفاظت رمزدار پوشهها و تنظیمات Directory Privacy در کنترل پنل نیز میتوانند دسترسی عمومی به یک مسیر را مسدود کنند.
مطالعه بیشتر: هاست چیست و چگونه انتخاب میشود
بررسی خطای 403 در Apache و Nginx
بررسی Apache و LiteSpeed
در Apache، موارد زیر از علتهای مهم خطای 403 هستند:
- دستورات
Require - قوانین قدیمی
DenyوAllow - تنظیمات بخش
Directory - فایل
.htaccess - مجوز و مالکیت سیستمعامل
- نبود فایل index
تنظیمات Directory باید اجازه دسترسی مناسب به مسیر Document Root بدهد. پس از ویرایش فایل اصلی پیکربندی، ابتدا صحت Syntax را آزمایش کنید و فقط در صورت معتبر بودن تنظیمات، سرویس را Reload کنید.
بررسی Nginx
در Nginx، دستورهای deny، allow، internal، مسیرهای location و تنظیمات root یا alias میتوانند دسترسی را محدود کنند.
اشتباه در تطبیق Location، نبود فایل index یا مجوز نامناسب مسیر نیز ممکن است خطای 403 ایجاد کند. گزارش خطای Nginx معمولاً مشخص میکند مشکل به Permission، فهرست پوشه یا قانون دسترسی مربوط است.
بررسی SELinux و AppArmor
در سرورهایی که توسط خودتان مدیریت میشوند، ممکن است با وجود Permission و Ownership صحیح، سیاست امنیتی سیستمعامل دسترسی وبسرور را رد کند.
غیرفعالکردن دائمی SELinux یا AppArmor راهحل مناسبی نیست. ابتدا گزارشهای امنیتی را بررسی و سپس Context یا Policy لازم را بهصورت محدود اصلاح کنید.
مطالعه بیشتر: آموزش تنظیم UFW در اوبونتو
بررسی WAF، ModSecurity و CDN
فایروال برنامه وب ممکن است یک URL، پارامتر، IP، User-Agent یا الگوی درخواست را مشکوک تشخیص داده و پاسخ 403 صادر کند. خاموشکردن کامل WAF برای یک سایت فعال توصیه نمیشود.
ابتدا اطلاعات زیر را پیدا کنید:
- زمان دقیق درخواست
- نشانی مسدودشده
- IP درخواستکننده
- Rule ID
- دلیل ثبت شده برای مسدود سازی
اگر مشخص شد درخواست سالم بهاشتباه مسدود شده، بهجای غیرفعالکردن کامل سیستم امنیتی، یک استثنای محدود برای همان مسیر یا قانون تعریف کنید.
اگر خطا در لایه CDN ایجاد شده باشد، وضعیت DNS و ارتباط CDN با سرور مبدأ نیز باید بررسی شود. تفاوت پاسخ سرور مبدأ و CDN میتواند محل تولید خطا را مشخص کند.
سه سناریوی کاربردی
خطای 403 بعد از نصب افزونه امنیتی
سایت عمومی باز میشود، اما ورود به wp-admin فقط از IP مدیر با خطا مواجه است. سایت با اینترنت دیگری باز میشود و گزارش افزونه چند تلاش ورود ناموفق را نشان میدهد.
در این شرایط، تغییر Permission کل سایت کمکی نمیکند. باید پس از اطمینان از امنیت حساب، IP مسدودشده آزاد و محدودیت ورود بازتنظیم شود.
خطای 403 بعد از انتقال سایت
پس از انتقال فایلها، صفحه اصلی 403 است و در لاگ عبارت permission denied دیده میشود. بررسی نشان میدهد فایلها با مالک متفاوتی ایجاد شدهاند.
راهحل مناسب، اصلاح مالکیت توسط مدیر سرور و سپس بررسی مجوزهاست. تنظیم تمام فایلها روی 777 فقط مشکل را پنهان میکند.
خطای 403 فقط برای تصاویر
صفحات PHP باز میشوند، اما فایلهای پوشه uploads خطا دارند. در این حالت باید .htaccess همان پوشه، Hotlink Protection، Permission و مالکیت فایلهای رسانه بررسی شوند.
اصلاح محدود قانون مربوط به تصاویر، دقیق تر از تغییر پیکربندی کل وب سرور است.
چک لیست جلوگیری از تکرار خطای 403
- تغییرات افزونهها، WAF و پیکربندی سرور را ثبت کنید.
- پیش از انتقال یا بهروزرسانی سایت، نسخه پشتیبان داشته باشید.
- Permission و مالکیت فایلها را با الگوی پیشنهادی هاست تطبیق دهید.
- از استفاده دائمی از Permission برابر 777 خودداری کنید.
- فایروال یا لایههای امنیتی را بدون بررسی کامل غیرفعال نکنید.
- لاگ وبسرور، PHP، WAF و CDN را با زمان یکسان بررسی کنید.
- فایلهای بکاپ را در مسیر عمومی سایت رها نکنید.
- استثناهای موقت امنیتی را پس از پایان عیبیابی حذف کنید.
چه زمانی باید با پشتیبانی هاست تماس گرفت؟
در شرایط زیر بهتر است موضوع را به پشتیبانی هاست یا مدیر سرور ارجاع دهید:
- به گزارشهای سرور دسترسی ندارید.
- امکان اصلاح مالکیت فایلها وجود ندارد.
- چند سایت روی یک سرویس همزمان 403 میدهند.
- حساب هاست یا منابع سرویس محدود شدهاند.
- خطا پس از تغییرات سمت سرور ایجاد شده است.
- برای اصلاح WAF یا پیکربندی Apache و Nginx به دسترسی مدیریتی نیاز دارید.
هنگام ارسال تیکت، URL نمونه، زمان مشاهده خطا، تغییرات اخیر و تصویر پیام را ارائه دهید. رمز عبور را در تیکت عمومی یا پیام غیرامن ارسال نکنید.
جمع بندی
برای رفع خطای Forbidden 403 در وردپرس، هاست و سرور ابتدا باید محل رد شدن دسترسی مشخص شود. دامنه اثر خطا، آزمایش با شبکه دیگر و بررسی لاگها نشان میدهد که عیبیابی باید از افزونه وردپرس آغاز شود یا از Permission، مالکیت، .htaccess، WAF و تنظیمات وبسرور.
راهحل امن، تغییر محدود و مرحلهای است. نسخه پشتیبان تهیه کنید، در هر مرحله فقط یک عامل را تغییر دهید و نتیجه را ثبت کنید. استفاده از Permission برابر 777 یا غیرفعال کردن دائمی فایروال ممکن است خطا را موقتاً پنهان کند، اما مشکل امنیتی تازهای ایجاد خواهد کرد.
برای تحلیل لاگها، بررسی تنظیمات میزبانی یا انتخاب سرویس متناسب با سطح دسترسی پروژه، میتوانید با شرکت تجارت الکترونیک نوژن تماس بگیرید و از مشاوره فنی یا خدمات هاست و سرور این مجموعه استفاده کنید.
سؤالات متداول
آیا خطای 403 یعنی سایت هک شده است؟
خیر. خطای 403 بهتنهایی اثبات نمیکند سایت هک شده است و معمولاً به محدودیت دسترسی مربوط میشود. اگر بدون تغییر مشخصی ظاهر شده است، لاگها و فایلهای سایت را بررسی کنید.
آیا Permission برابر 777 خطای 403 را رفع میکند؟
ممکن است در بعضی شرایط علامت خطا را موقتاً تغییر دهد، اما راهحل ایمنی نیست. باید مالکیت و مجوز صحیح بر اساس ساختار هاست مشخص شود.
چرا فقط پیشخوان وردپرس خطای 403 میدهد؟
افزونه امنیتی، مسدودشدن IP، WAF، فایل .htaccess یا محدودیت مسیر wp-admin از دلایل محتمل هستند. گزارش مربوط به همان URL را بررسی کنید.
چرا بعد از انتقال هاست خطای 403 ایجاد شده است؟
مالکیت نادرست، Document Root اشتباه، انتقال ناقص فایلها، نبود فایل index یا قوانین ناسازگار .htaccess از علتهای رایج هستند.
آیا پاک کردن کش خطای 403 را برطرف میکند؟
اگر صفحه خطا کش شده باشد، پاککردن کش نمایش نتیجه جدید را ممکن میکند؛ اما قانون یا مجوزی که دسترسی را رد میکند باید جداگانه اصلاح شود.
آیا در Nginx باید فایل .htaccess را ویرایش کنیم؟
خیر. Nginx فایل .htaccess را پردازش نمیکند. قوانین دسترسی و Rewrite باید در پیکربندی Nginx یا کنترلپنل مرتبط بررسی شوند.
چگونه بفهمیم ModSecurity باعث خطای 403 شده است؟
زمان و URL درخواست را با گزارش WAF یا ModSecurity مقایسه کنید. وجود Rule ID هم زمان با پاسخ 403 سرنخ مهمی است؛ استثنا باید محدود و پس از بررسی امنیتی تعریف شود.