我的.htaccess文件中的IPv6地址被阻止,但是我收到500 Internal Server Error?

我想阻止我的WordPress网站上 .htaccess 文件中以 2a01:598:xxx 开头的所有IP地址。

但是 每次编辑 .htaccess 文件时,都无法访问我的网站。 我收到内部服务器错误。

,在#END WordPress 之后,我的 .htaccess 文件的末尾我添加了代码:

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内部服务器错误?

我不知道该怎么办。 我只想阻止我的 .htaccess 文件中以此 2a01:598:开头的所有IP地址。

3
задан 9 November 2019 в 02:50
1 ответ

Если Вы получаете 500 Внутренних Ошибок Сервера, необходимо проверить журнал ошибок сервера на детали ошибки. 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. Например, для определения диапазона дюйм/с, которые "запускаются 2a01:598:" необходимо было бы использовать 2a01:598::/32 использование нотация CIDR ( пример ).

Require all granted
Require not ip 11.222.33.444

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

Ссылка:

Так, необходимо было бы сделать что-то как следующее вместо этого:

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

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

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

1
ответ дан 3 December 2019 в 07:21

Теги

Похожие вопросы