Я пытался перенаправить диапазон IP-адресов с одной ссылки на другую. Я могу сделать это для одного блока из 256 адресов:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} ^111\.111\.111\.
RewriteCond %{REQUEST_URI} /original_link/$
RewriteRule .* /new_link/ [R=301,L]

Однако попытка заблокировать диапазон адресов 8192 (xxx.xxx.128.0 - xxx.xxx.159.255) требует регулярных выражений для правильного выражения перенаправления. Несмотря на то, что я нашел несколько примеров, я не мог понять смысл значений, которые должны быть заключены в квадратные скобки. Может кто-нибудь объяснить, как правильно использовать эти выражения?

Моя собственная попытка будет выглядеть примерно так:

RewriteCond %{REMOTE_HOST} ^xxx\.xxx\.1([2-5][8-9])

1 ответ1

1

Нет, это будет соответствовать

xxx.xxx.128
xxx.xxx.129
xxx.xxx.138
xxx.xxx.139
xxx.xxx.148
xxx.xxx.149
xxx.xxx.158
xxx.xxx.159

То, что вы хотите (если регулярные выражения - даже правильный инструмент; я не уверен, что есть лучший способ сопоставления с сетевыми масками, который работает здесь), будет

^xxx\.xxx\.1(2[89]|[3-5][0-9])

Часть в скобках соответствует либо 2 либо 8 либо 9 , либо 3 , 4 или 5 а затем любой цифре.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .