Ошибка 403 Forbidden WordPress — что делать

WordPress услуги
Нужна помощь с сайтом?
Исправим, настроим или улучшим сайт. Оставьте заявку — подскажем решение.
Оставить заявку
Автор:vkuzyomko

Ошибка 403 Forbidden WordPress — что делать

Краткий ответ: ошибка 403 Forbidden WordPress означает, что сервер понял запрос, но запретил доступ к странице, файлу, админке, REST API, admin-ajax.php или отдельному разделу сайта. Чаще всего причина в .htaccess, правах файлов, security-плагине, WAF, ModSecurity, Cloudflare, IP-блокировке, hotlink protection, неправильных правилах доступа или ошибке после переноса сайта.

Ошибка 403 отличается от 404 и 500. При 404 сервер не находит страницу. При 500 сервер не может выполнить запрос из-за внутренней ошибки. При 403 страница или файл существуют, но доступ к ним запрещён.

Если 403 появляется именно при входе в админку, сначала проверьте /wp-admin/, /wp-login.php, security-плагины и правила блокировки IP. Подробный порядок восстановления входа есть в статье не работает админка WordPress — что делать. Если вместо 403 сайт показывает внутреннюю ошибку сервера, ближе подойдёт материал ошибка 500 WordPress.

Причина

Ошибка 403 Forbidden в WordPress появляется, когда доступ блокируется на одном из уровней: браузер, кеш/CDN, WordPress-плагин, .htaccess, права файлов, веб-сервер, WAF, хостинг или внешняя защита вроде Cloudflare.

Самые частые причины:

  • Неправильные права файлов и папок — сервер не может прочитать нужный файл или открыть директорию.
  • Повреждённый или слишком жёсткий .htaccess — правила deny, allow, rewrite, hotlink protection или редиректы блокируют доступ.
  • Security-плагин WordPress — блокирует IP, страну, user-agent, попытки входа, REST API, XML-RPC или wp-admin.
  • WAF / ModSecurity — серверная защита считает запрос подозрительным и отдаёт 403.
  • Cloudflare или другой CDN — firewall rule, bot fight mode, managed challenge или country block закрывает доступ.
  • Блокировка admin-ajax.php — из-за этого не работают формы, редактор, WooCommerce checkout или AJAX-действия.
  • Блокировка REST API — ломается Gutenberg, плагины, интеграции и часть админки.
  • Неправильный владелец файлов — частая проблема после переноса сайта или ручной загрузки файлов.
  • Отсутствует индексный файл — сервер запрещает просмотр директории, если нет index.php или index.html.
  • Hotlink protection — блокирует изображения, CSS, JS или файлы при неправильном домене.
  • Взлом или вредоносные правила — в .htaccess, wp-config.php, теме или базе могли появиться чужие ограничения и редиректы.

Если 403 появился после установки security-плагина, обновления, переноса сайта или смены хостинга, начинать нужно именно с этих изменений. В большинстве случаев причина находится быстрее, если смотреть логи, а не просто отключать всё подряд.

Диагностика

Сначала определите, где именно появляется ошибка 403. От этого зависит порядок проверки.

Где появляется 403 Вероятная причина Что проверить первым
На всём сайте права файлов, .htaccess, WAF, хостинг, неправильная папка сайта права, document root, .htaccess, логи хостинга
Только в /wp-admin/ security-плагин, IP-блокировка, WAF, правила для админки wp-login.php, security-плагин, IP, Cloudflare, .htaccess
Только на wp-login.php защита входа, лимит попыток, блокировка страны/IP security-плагин, WAF, cookies, firewall logs
Только на admin-ajax.php WAF, security-плагин, кеш, блокировка AJAX логи WAF, правила Cloudflare, security-плагины, кеш
Только на /wp-json/ REST API заблокирован плагином, WAF или сервером REST API, security-настройки, .htaccess, firewall
Только при сохранении записи ModSecurity, WAF, подозрительный HTML, iframe, script, JSON-запрос логи ModSecurity, Cloudflare events, Gutenberg, REST API
Только на изображениях, CSS или JS права файлов, hotlink protection, CDN, неправильные пути permissions, hotlink, CDN, mixed content, консоль браузера
После переноса сайта владелец файлов, document root, права, .htaccess, серверные правила путь сайта, owner/group, права, error_log

Быстрая проверка

  • Откройте сайт в другом браузере или режиме инкогнито.
  • Проверьте сайт с другого IP или мобильного интернета.
  • Откройте напрямую /wp-login.php.
  • Проверьте, работает ли главная страница.
  • Проверьте, появляется ли 403 только в админке или на всём сайте.
  • Проверьте логи хостинга, WAF, Cloudflare и security-плагина.
  • Вспомните последнее изменение: обновление, перенос, новый плагин, настройка кеша, SSL, CDN, защита.

Если 403 появляется на admin-ajax.php, это может ломать формы, фильтры, корзину, checkout и часть админки. Для такой ситуации есть отдельная инструкция не работает admin-ajax.php WordPress.

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Исправлять 403 нужно аккуратно. Это ошибка доступа, поэтому простое “отключить защиту” может вернуть сайт, но оставить дыру в безопасности.

1. Проверьте URL и область ошибки

Сначала убедитесь, что открываете правильный адрес:

  • https://example.com/wp-admin/
  • https://example.com/wp-login.php
  • https://example.com/wp-json/
  • https://example.com/wp-admin/admin-ajax.php

Если 403 только на одном URL, не нужно сразу трогать весь сайт. Ищите правило, которое блокирует именно этот путь.

2. Очистите кеш и проверьте другой IP

Иногда 403 отдаёт не сам WordPress, а кеш, CDN, Cloudflare или WAF. Проверьте:

  • режим инкогнито;
  • другой браузер;
  • мобильный интернет;
  • отключение VPN;
  • очистку кеша плагина;
  • очистку CDN/Cloudflare cache.

Если с другого IP сайт открывается, вероятна IP-блокировка, rate limit, country block или правило WAF.

3. Проверьте права файлов и папок

Для большинства WordPress-сайтов нормальные значения такие:

  • папки: 755;
  • файлы: 644;
  • wp-config.php: часто 600 или 640, зависит от хостинга.

Не ставьте 777. Это небезопасно и не является нормальным решением 403.

После переноса сайта также проверьте владельца файлов. Если файлы принадлежат не тому пользователю, сервер может запрещать доступ даже при визуально правильных правах.

4. Временно проверьте .htaccess

Через FTP/SFTP или файловый менеджер хостинга переименуйте файл в корне сайта:

  • было: .htaccess
  • стало: .htaccess_old

После этого откройте страницу, где была ошибка. Если 403 исчезла, причина в правилах .htaccess.

Ищите в старом файле такие конструкции:

  • Deny from all
  • Require all denied
  • Require not ip
  • Order allow,deny
  • блокировки wp-admin, wp-login.php, xmlrpc.php, admin-ajax.php;
  • hotlink protection;
  • старые правила security-плагина;
  • редиректы после переноса сайта.

5. Проверьте security-плагины

Плагины безопасности могут блокировать доступ по IP, стране, количеству попыток входа, user-agent, URL, REST API или AJAX. Если доступа к админке нет, временно отключите security-плагин через FTP, переименовав его папку внутри wp-content/plugins/.

После восстановления доступа не оставляйте сайт без защиты. Нужно найти конкретное правило, которое блокировало нужный запрос, и настроить исключение.

6. Проверьте WAF, ModSecurity и Cloudflare

Если 403 появляется при сохранении страницы, отправке формы, AJAX-запросе, REST API или checkout, часто виноват WAF. Он может принять нормальный запрос WordPress за подозрительный.

Проверьте:

  • логи ModSecurity на хостинге;
  • Firewall Events в Cloudflare;
  • правила блокировки страны или IP;
  • Bot Fight Mode / Super Bot Fight Mode;
  • managed rules;
  • custom firewall rules;
  • rate limiting.

Лучшее решение — не отключать WAF полностью, а добавить точное исключение для нужного действия, URL или IP, если это безопасно.

7. Проверьте REST API и admin-ajax.php

Если редактор WordPress не сохраняет записи, не работает Gutenberg, формы не отправляются или WooCommerce зависает, проверьте:

  • /wp-json/
  • /wp-admin/admin-ajax.php
  • консоль браузера;
  • Network во вкладке DevTools;
  • ответ сервера на AJAX/REST-запросы;
  • логи WAF и security-плагина.

Если REST API заблокирован, может помочь отдельная инструкция не работает REST API WordPress.

8. Проверьте hotlink protection

Если 403 получают только изображения, CSS, JS или файлы, проблема может быть в hotlink protection. Особенно часто это видно после смены домена, подключения CDN, перехода с HTTP на HTTPS или работы через временный домен хостинга.

Проверьте, не блокируется ли ваш собственный домен, поддомен, CDN-домен или www-версия сайта.

9. Проверьте отсутствие index.php

Если 403 появляется при открытии папки, например /wp-content/uploads/, это может быть нормальным поведением: сервер запрещает просмотр директории. Но если 403 на главной странице, проверьте, есть ли в корне сайта index.php и правильно ли настроена корневая папка домена.

10. Проверьте взлом и чужие правила

Если 403 появился внезапно, вместе с редиректами, чужими страницами, неизвестными файлами или странными правилами в .htaccess, проверьте сайт на взлом.

  • .htaccess в корне и подпапках;
  • wp-config.php;
  • папку mu-plugins;
  • активную тему;
  • неизвестных пользователей-администраторов;
  • подозрительные записи в wp_options;
  • недавно изменённые PHP-файлы.

Код

Важно: правила ниже могут повлиять на доступ к сайту, админке, REST API, admin-ajax.php, WooCommerce, оплате, формам и безопасности. Перед изменениями сохраните старый .htaccess и сделайте резервную копию сайта. Не вставляйте правила вслепую, если на сайте есть особая защита, мультиязычность, кеш или редиректы.

Стандартный .htaccess WordPress

Куда вставлять: файл .htaccess в корне сайта на Apache/LiteSpeed. Перед заменой сохраните старую версию.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Запрет просмотра папок

Это правило обычно безопасно и помогает закрыть листинг директорий, но оно не должно блокировать нормальные файлы сайта.

Options -Indexes

Пример аккуратного разрешения admin-ajax.php

Важно: не открывайте всю админку публично. Если у вас есть правило, которое блокирует весь wp-admin, убедитесь, что admin-ajax.php доступен, потому что его используют формы, плагины и WooCommerce.

<Files "admin-ajax.php">
    Require all granted
</Files>

Пример проверки прав через SSH

Важно: команды меняют права файлов. Используйте только на своём сайте и убедитесь, что на вашем хостинге такие права допустимы.

find /path/to/site -type d -exec chmod 755 {} ;
find /path/to/site -type f -exec chmod 644 {} ;

WP-CLI: отключить security-плагин

Важно: отключение security-плагина снижает защиту сайта. Используйте только для диагностики и включите обратно после настройки правила.

wp plugin list
wp plugin deactivate nazvanie-security-plagina

Результат

После правильной диагностики становится понятно, кто именно отдавал 403:

  • .htaccess блокировал путь или IP;
  • security-плагин закрыл вход, REST API или admin-ajax.php;
  • WAF / ModSecurity заблокировал запрос;
  • Cloudflare ограничил IP, страну, бота или конкретный URL;
  • права файлов или владелец файлов были неправильными;
  • hotlink protection блокировал изображения, CSS или JS;
  • после переноса сайта домен указывал не в ту папку;
  • на сайте появились вредоносные правила или чужие ограничения.

Правильный результат — не просто убрать 403, а сохранить нужную защиту и открыть только то, что действительно должно работать: админку для администратора, admin-ajax.php для AJAX, REST API для нужных функций, публичные страницы для посетителей и файлы для браузера.

Дополнительные способы

Если 403 появляется только у вас

Проверьте другой IP, VPN, мобильный интернет, блокировку страны, security-плагин, Cloudflare и fail2ban на сервере. Если у других сайт открывается, проблема может быть в вашем IP или cookies.

Если 403 появляется только при сохранении записи

Часто виноват WAF или ModSecurity. Некоторые правила блокируют HTML, iframe, script, JSON, длинные тексты, технические слова или фрагменты кода в редакторе. Проверьте логи firewall в момент сохранения.

Если 403 появляется на WooCommerce checkout

Проверьте wc-ajax, admin-ajax.php, платёжный шлюз, WAF, кеш, security-плагин и правила Cloudflare. Не кешируйте checkout, корзину и страницу оплаты.

Если 403 появился после переноса сайта

Проверьте:

  • правильную папку домена;
  • наличие index.php;
  • права файлов и владельца;
  • .htaccess;
  • пути в конфигурации сервера;
  • SSL и редиректы;
  • настройки WAF на новом хостинге.

Если 403 появляется на изображениях

Проверьте права в wp-content/uploads/, hotlink protection, CDN, смешанный контент HTTP/HTTPS, правильность URL файлов и правила в .htaccess внутри папки uploads.

Частые ошибки

  • Ставить права 777. Это опасно и не является нормальным исправлением 403.
  • Удалять .htaccess без копии. Можно потерять редиректы, кеш, SSL-правила и защиту.
  • Полностью отключать WAF навсегда. Лучше найти конкретное правило и настроить исключение.
  • Открывать весь wp-admin. Иногда нужно разрешить только admin-ajax.php, а не всю админку.
  • Игнорировать Cloudflare events. Если 403 отдаёт Cloudflare, WordPress-логи могут быть чистыми.
  • Путать 403 и 404. При 403 доступ запрещён, при 404 ресурс не найден. Диагностика разная.
  • Проверять только главную страницу. Нужно проверить админку, формы, REST API, AJAX, изображения, CSS, JS и checkout.
  • Не учитывать security-плагины. Многие 403 создаются именно ими после жёстких настроек.
  • Не проверять владельца файлов после переноса. Права могут быть правильными, но сервер всё равно не имеет доступа из-за owner/group.

Диагностика проблем

Чеклист при ошибке 403 Forbidden WordPress

  1. Определите, где 403: весь сайт, админка, login, REST API, AJAX, файл, checkout.
  2. Проверьте сайт в другом браузере и с другого IP.
  3. Очистите кеш сайта, браузера, CDN и Cloudflare.
  4. Проверьте права файлов: папки 755, файлы 644.
  5. Проверьте владельца файлов после переноса.
  6. Временно переименуйте .htaccess и проверьте сайт.
  7. Проверьте security-плагины и их логи.
  8. Проверьте WAF, ModSecurity и firewall events.
  9. Проверьте Cloudflare rules, country block и bot protection.
  10. Проверьте доступность /wp-json/ и /wp-admin/admin-ajax.php.
  11. Проверьте hotlink protection, если 403 на изображениях или файлах.
  12. Проверьте, нет ли вредоносных правил в .htaccess, wp-config.php, теме и mu-plugins.
  13. После исправления проверьте формы, заявки, WooCommerce, админку и мобильную версию.

Что искать в логах

  • client denied by server configuration — серверное правило запретило доступ.
  • AH01630: client denied by server configuration — Apache запретил доступ по конфигурации.
  • ModSecurity: Access denied — запрос заблокировал ModSecurity.
  • Permission denied — проблема прав или владельца файлов.
  • 403 в access log на admin-ajax.php, wp-json, wp-login.php — блокируется конкретный endpoint.
  • Firewall event в Cloudflare — запрос остановлен правилом CDN/WAF.

FAQ

Что значит ошибка 403 Forbidden в WordPress?

Это значит, что сервер понял запрос, но запретил доступ. В WordPress причина часто связана с .htaccess, правами файлов, security-плагином, WAF, Cloudflare, IP-блокировкой или настройками хостинга.

Чем 403 отличается от 404 и 500?

403 — доступ запрещён. 404 — страница или файл не найдены. 500 — внутренняя ошибка сервера. При 403 ресурс может существовать, но сервер не разрешает его открыть.

Почему wp-admin показывает 403?

Чаще всего из-за security-плагина, IP-блокировки, WAF, Cloudflare, правил .htaccess или защиты входа. Проверьте wp-login.php, firewall logs и настройки безопасности.

Почему 403 появляется на admin-ajax.php?

Причина может быть в WAF, security-плагине, Cloudflare, кешировании или жёстком запрете wp-admin. admin-ajax.php должен быть доступен для легитимных AJAX-запросов.

Какие права файлов нужны для WordPress?

Обычно папки имеют права 755, файлы — 644. Для wp-config.php права могут быть строже, например 600 или 640, если это поддерживает хостинг.

Можно ли поставить права 777, чтобы убрать 403?

Не стоит. Права 777 открывают лишний доступ и создают риск безопасности. Лучше найти точную причину: owner, server config, .htaccess, WAF или плагин.

Может ли .htaccess вызвать 403?

Да. Правила deny/allow, hotlink protection, блокировка IP, запрет wp-admin, старые правила security-плагина и неправильные rewrite rules могут отдавать 403.

Может ли Cloudflare вызвать ошибку 403?

Да. Cloudflare может заблокировать запрос через WAF, firewall rules, bot protection, country block или rate limiting. В таком случае нужно смотреть Firewall Events, а не только WordPress-логи.

Почему 403 появляется только при сохранении записи?

Часто это ModSecurity или WAF. Запрос редактора может содержать HTML, JSON, iframe, script или технический текст, который защита считает подозрительным.

Почему 403 появляется только на изображениях?

Вероятны неправильные права в uploads, hotlink protection, CDN, неверный домен, HTTP/HTTPS-конфликт или правило .htaccess внутри папки файлов.

Можно ли отключить security-плагин для проверки?

Можно временно, если есть копия и понимание рисков. После диагностики лучше не оставлять сайт без защиты, а настроить конкретное правило или исключение.

Когда обращаться к хостингу?

Если в WordPress всё проверено, но 403 остаётся, попросите хостинг проверить error_log, ModSecurity, WAF, владельца файлов, права, document root, IP-блокировки и правила сервера.

Вывод

Ошибка 403 Forbidden WordPress почти всегда связана с запретом доступа: .htaccess, права файлов, security-плагин, WAF, Cloudflare, IP-блокировка, REST API, admin-ajax.php, hotlink protection или настройки хостинга. Поэтому её нужно диагностировать как ошибку доступа, а не как обычную поломку страницы.

Безопасный порядок такой: определить место ошибки, проверить другой IP, очистить кеш, посмотреть логи, проверить права файлов, временно проверить .htaccess, security-плагины, WAF, Cloudflare, REST API и admin-ajax.php. Так можно открыть нужный доступ, но не отключить защиту сайта полностью.

Об авторе

vkuzyomko administrator