Как отключить xmlrpc.php в WordPress через .htaccess и проверить, что запросы не проходят

Если на сайте не нужны старые мобильные клиенты, внешние публикации через XML-RPC и интеграции, которые завязаны именно на этот протокол, xmlrpc.php лучше закрыть на уровне веб-сервера. Это не замена всем мерам безопасности, но хороший способ убрать лишнюю точку входа и снизить шум от автоматических запросов.

Ниже — рабочий сценарий именно для случая, когда вы хотите отключить xmlrpc.php через .htaccess, а не через плагин и не через код темы. Разберём, как понять, что блокировка нужна, как её настроить, как проверить результат и где чаще всего ошибаются.

Когда блокировать xmlrpc.php действительно имеет смысл

xmlrpc.php нужен не каждому сайту. Если вы не используете внешние приложения для публикации, старые интеграции и не подключаете сервисы, которым нужен XML-RPC, этот файл чаще всего просто остаётся лишней поверхностью атаки. На практике его обычно отключают на обычных корпоративных сайтах, блогах и проектах, где весь контент редактируется из админки WordPress.

Но есть важная оговорка: если у вас подключены Jetpack, сторонние мобильные клиенты, удалённая публикация или какие-то старые сервисы синхронизации, блокировка может сломать часть функций. Поэтому сначала проверьте сценарии использования, а потом уже закрывайте доступ.

Как быстро понять, используется ли XML-RPC

  • Проверьте, есть ли у вас интеграции, которые публикуют записи удалённо.
  • Посмотрите, не используется ли Jetpack в режимах, где ему нужен XML-RPC.
  • Откройте логи сервера и посмотрите, идут ли запросы к /xmlrpc.php.
  • Если на сайте есть мониторинг безопасности, проверьте, не фиксирует ли он постоянные попытки обращения к этому файлу.

Если запросы идут регулярно, а легитимных сценариев нет, блокировка оправдана.

Диагностика: что именно происходит с xmlrpc.php сейчас

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

Самый простой тест — запросить файл напрямую:

curl -I https://example.com/xmlrpc.php

Если сейчас файл доступен, вы обычно увидите ответ вроде 200 OK или 405 Method Not Allowed. Для нашей задачи это значит, что доступ не закрыт на уровне веб-сервера. Если уже стоит блокировка, ответ может быть 403 Forbidden.

Ещё один полезный тест — проверить не только заголовки, но и тело ответа:

curl -s https://example.com/xmlrpc.php | head

На живом WordPress без блокировки вы часто увидите сообщение о том, что XML-RPC сервер принимает только POST-запросы. Это не защита, а просто штатное поведение файла.

Пошаговое решение через .htaccess

Если сайт работает на Apache или LiteSpeed и использует .htaccess, можно закрыть доступ к xmlrpc.php без установки плагинов. Правило лучше добавлять ближе к началу файла, но после стандартного блока WordPress, если вы не уверены, как у вас устроены другие правила.

Вариант 1: жёсткий запрет по имени файла

Это самый прямой способ. Он запрещает доступ к xmlrpc.php для всех запросов:

<Files xmlrpc.php>
    Require all denied
</Files>

Для старых конфигураций Apache 2.2 иногда встречается синтаксис через Order и Deny from all, но на современных серверах лучше использовать Require all denied.

Вариант 2: блокировка через mod_rewrite

Если вам удобнее держать всё в одном блоке правил, можно закрыть путь через RewriteRule:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^xmlrpc\.php$ - [F,L]
</IfModule>

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

Куда вставить правило

Если в корне сайта уже есть стандартный блок WordPress, не ломайте его. Добавьте запрет выше или ниже, но не внутрь секции с правилами # BEGIN WordPress и # END WordPress, если не понимаете, как именно у вас генерируется этот блок. WordPress может перезаписывать только свой участок, а ваши правила должны жить отдельно.

Сравнение подходов: .htaccess, плагин или код

СпособКогда подходитПлюсыМинусы
.htaccessApache/LiteSpeed, нужен быстрый запретБез плагинов, работает на уровне сервераНе подходит для Nginx, можно ошибиться в синтаксисе
Плагин безопасностиНужен интерфейс и дополнительные проверкиПроще управлять из админкиЛишняя нагрузка и зависимость от плагина
Код в теме/плагинеНужна точечная логика, например по IPГибкостьЛегко сломать при обновлении, не лучший вариант для простого запрета

Если задача только в том, чтобы закрыть xmlrpc.php, .htaccess обычно самый практичный вариант. Если сайт на Nginx, правило нужно писать уже в конфигурации сервера, а не в .htaccess.

Как проверить, что блокировка сработала

После правки файла не ограничивайтесь открытием главной страницы. Нужно проверить именно путь /xmlrpc.php.

  1. Откройте https://example.com/xmlrpc.php в браузере.
  2. Проверьте ответ через curl -I.
  3. Если есть доступ к логам, убедитесь, что запросы больше не доходят до PHP-обработчика.
  4. Проверьте, не сломались ли внешние интеграции, если они были.

Ожидаемый результат — 403 Forbidden или другой явный запрет на уровне веб-сервера. Если вы видите обычный ответ WordPress, правило не применилось. Если сайт начал отдавать ошибку на все страницы, значит, правило вставлено не туда или в файле есть синтаксическая ошибка.

Частые ошибки и как их исправить

Правило добавили не в тот файл

На Apache запрет через .htaccess работает только если сервер вообще читает этот файл и для каталога разрешён AllowOverride. Если сайт на Nginx, изменения в .htaccess ничего не дадут.

Сломали основной блок WordPress

Если правило вставили внутрь служебного блока, а потом WordPress или плагин переписал его, запрет исчезнет. Держите отдельные правила вне автогенерируемой секции.

Использовали несовместимый синтаксис

На старых инструкциях до сих пор встречается Deny from all. На современных конфигурациях Apache лучше использовать Require all denied. Если сервер старый, проверьте версию Apache и синтаксис, который он понимает.

Ожидали, что это заменит все меры защиты

Блокировка xmlrpc.php не отменяет обновления WordPress, контроль учётных записей, ограничение попыток входа и нормальную настройку прав на файлы. Это только один слой защиты.

Если нужен более мягкий вариант: не блокировать всё, а ограничить доступ

Иногда полный запрет слишком жёсткий. Например, если XML-RPC нужен только для одного внутреннего сервиса. Тогда лучше не открывать его всем подряд, а ограничить по IP на уровне веб-сервера или через правила доступа. Для этого уже нужен более аккуратный сценарий, и он зависит от того, Apache у вас или Nginx, есть ли прокси и как устроен хостинг.

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

Практические советы по безопасности и производительности

  • Сначала проверьте, не использует ли сайт XML-RPC легитимно, и только потом блокируйте.
  • Не ставьте несколько разных способов отключения одновременно без необходимости: плагин, код и серверное правило могут мешать друг другу.
  • После изменения конфигурации сохраните копию исходного .htaccess.
  • Если сайт под нагрузкой и к xmlrpc.php идут массовые запросы, блокировка на уровне сервера обычно полезнее, чем обработка на уровне PHP.
  • После внедрения проверьте не только HTTP-ответ, но и логи веб-сервера — это самый надёжный способ убедиться, что запросы отсечены раньше WordPress.

Если вам нужен не только запрет XML-RPC, но и более широкая чистка технических дублей, лишних скриптов и SEO-шумов, иногда удобнее закрывать такие задачи набором настроек в одном инструменте. Например, Clearfy Pro уместен там, где нужно управлять несколькими техническими оптимизациями из одной панели: Clearfy Pro.

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

Как отключить отдельные XML sitemap в WordPress и оставить только нужные карты сайта
19.09.2026
Как настроить Redis Object Cache в WordPress и проверить, что он реально ускоряет сайт
05.09.2026
Как закрыть дубли страниц авторов и архивов в WordPress без потери индексации
15.08.2026
Как отключить xmlrpc.php в WordPress через переадресацию и защитить админку
23.09.2026
Как запретить индексацию технических страниц в WordPress без robots.txt
26.08.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙