Назад | Перейти на главную страницу

Блокировать IPv6-адреса в моем файле .htaccess, но я получаю 500 Internal Server Error?

Я хочу заблокировать все IP-адреса, начиная с этого 2a01:598:xxx в моем .htaccess файл на моем веб-сайте WordPress.

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

И конец моей .htaccess файл после # END WordPress Я добавил Код:

Require all granted
Require not ip 2a01:598:

Я тоже пробовал этот вариант:

Require all granted
Require not ip 2a01:598:::

Но ничего не вышло. Даже когда я пытаюсь заблокировать свой собственный IPv4-адрес следующим образом:

Require all granted
Require not ip 11.222.33.444 (with my IP instead) 

Я получаю 500 Internal Server Error?

Я не знаю что делать Я просто хочу заблокировать все IP-адреса, начиная с этого 2a01:598: в моем .htaccess файл.

Если вы получаете 500 Internal Server Error, вам необходимо проверить журнал ошибок вашего сервера для получения подробной информации об ошибке. Статус 500 - это просто общий ответ, возвращенный клиенту из-за какой-то конкретной ошибки сервера.

Здесь есть ряд проблем, которые приводят к ошибкам ...

Require not ip 2a01:598:
:
Require not ip 2a01:598:::

В обоих случаях указанные адреса IPv6 2a01:598: и 2a01:598::: недействительны - следовательно, ответ об ошибке 500. Вы могли бы использовать 2a01:598:: (2 двоеточия), но это сокращение от конкретный IPv6-адрес 2a01:598:0:0:0:0:0:0, что вам не нужно.

С адресами IPv4 Apache позволяет использовать частичные IP-адреса (целые октеты), например. 203.0.113 (без конечной точки). Для адресов IPv6 можно ожидать 2a01:598 быть разрешенным, однако, похоже, что это не поддерживается, поскольку это снова приводит к ответу 500 и регистрации ошибки «Указанный IP-адрес недействителен».

Чтобы указать диапазон адресов IPv6, вам необходимо использовать нотацию CIDR. Например, чтобы указать диапазон IP-адресов, с которых 2a01:598:", вам нужно будет использовать 2a01:598::/32 используя обозначение CIDR (пример).

Require all granted
Require not ip 11.222.33.444

Когда вы указываете несколько Require директивы таким образом, Apache значения по умолчанию к <RequireAny> контейнер. Отрицательный директивы (т.е. Require not) не разрешены в <RequireAny> контейнер; отсюда ошибка 500. ("отрицательная директива Require не действует в <RequireAny> директива "регистрируется как ошибка.) Вам необходимо явно использовать <RequireAll> контейнер здесь.

Ссылка:

Решение

Итак, вместо этого вам нужно будет сделать что-то вроде следующего:

<RequireAll>
Require all granted
Require not ip 2a01:598::/32
</RequireAll>

И конец моей .htaccess файл после # END WordPress

По логике вещей, это должно быть в верхней части вашего .htaccess файл, перед то # BEGIN WordPress маркер комментария. Директивы блокировки должны быть первыми. Однако это, вероятно, не имеет значения (из-за того, как Apache обрабатывает разные модули).