我一直在尝试将 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
不,那只会匹配
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
不在您的范围内的内容。