Comment les expressions régulières fonctionnent-elles dans htaccess pour rediriger une plage IP

J'ai essayé de rediriger une plage IP d'un lien vers l'autre. Je peux le faire pour un seul bloc d'adresse 256:

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

Cependant, essayer de bloquer une plage d'adresses 8192 (xxx.xxx.128.0 – xxx.xxx.159.255) nécessite des expressions régulières pour exprimer correctement la redirection. Même si j'ai trouvé quelques exemples, je ne pouvais pas beaucoup comprendre les valeurs qui doivent être mises entre parenthèses. Quelqu'un peut-il expliquer comment utiliser correctement ces expressions?

Ma propre tentative ressemblerait à ceci:

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

Non, cela ne correspondrait que

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

Ce que vous voulez (si regexes est même le bon outil, je ne sais pas s'il existe une meilleure façon de faire correspondre les masques de réseau qui fonctionnent ici) serait

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

La partie entre parenthèse correspond soit à 2 suivie de 8 ou 9 , soit de 3 , 4 ou 5 suivie d'un chiffre quelconque.

Vous avez besoin du "n'importe quel chiffre" dans le deuxième cas, car sinon, le regex correspondrait, par exemple, à xxx.xxx.13.57 qui n'est pas dans votre gamme.