Несколько сбивает с толку.
Да, это не имеет смысла! Казалось бы, что-то еще происходит?
Директива, которую вы опубликовали, заблокирует указанный URL-адрес - фактически, он может заблокировать слишком много, поскольку вы не проверяете URL-путь. Чтобы заблокировать этот определенный URL, вы должны использовать что-то вроде следующего:
RewriteCond %{QUERY_STRING} ^action=force_refresh_get_site_version$
RewriteRule ^wp-admin/admin-ajax.php$ - [F]
Флаг L
является излишним, подразумевается при использовании флага F
.
Одной из возможных причин статуса ответа 404 является то, что ваш пользовательский 403 (определенный в .htaccess
или конфигурации вашего сервера) переопределяет код состояния и явно устанавливает 404. (Это не так уж редко на некоторых общих серверах.) Однако это не похоже на то, что вы видите ниже ...
Но если я уберу эти две строки:
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
Эти две строки, по-видимому, не имеют отношения к проблеме, поскольку предыдущая директива уже должна была заблокировать запрос.
Первый RewriteRule
- это просто «оптимизация», которая предотвращает ненужную проверку файловой системы при вызове фронт-контроллера (по последней директиве RewriteRule
).
Если вы удалите первую директиву RewriteCond
, это будет означать, что этот запрос (запрос, который вы пытаетесь заблокировать) в противном случае обрабатывался бы фронт-контроллером WordPress (если бы не предыдущие директивы, которые должны блокировать запрос). Это, скорее всего, приведет к 404, а не к 403. Это также приведет к разрыву всех ссылок на ресурсы статуса (CSS, JS, изображения и т. Д.), Так что ваш сайт вряд ли будет работать должным образом?!
Проверить наличие других файлов .htaccess
по пути файловой системы, поскольку они могли бы создать конфликт?