Apache で RewriteMap ディレクティブを使用して、特定の範囲の IP と特定の IP を組み合わせて "ホワイト リスト" (許可のみ) しようとしています。私にとってこれが難しいのは、ホワイトリストに 131.132.* (または CIDR 表記では 131.132.0.0/16) などの広範囲の IP と同じリスト内の特定の IP が混在していることです。私の理解では、RewriteConds は単純なテキスト文字列/文字の比較を行うだけなので、mod_rewrite で CIDR 表記を使用することはできません (これは正しいですか?)。これまでのところ、これが私の RewriteMap ディレクティブで思いついたものですが、うまくいくかどうかはわかりません。以下は、131.132. .(131.132.0.0/16) ... つまり、開始範囲 131.132.0.0 から終了範囲 131.132.255.255) および範囲 121.122.123.* (つまり、開始範囲 121.122.123.0 から終了範囲 121.122.123.255) および特定の IP 111.112 .113.114、および他のすべての IP をブロックしますか? また、最後の 3 つの RewriteCond 行の後方参照 (%1、%2、%3、%4) (RewriteCond 行が「OR」されていることに注意してください) は、すべての参照について最初の RewriteCond 行を参照して適切に機能しますか?
RewriteMap ipslist txt:"/path/to/whitelist.txt"
RewriteCond %{REMOTE_ADDR} ^(\d+)\.(\d+)\.(\d+)\.(\d+)$
RewriteCond ${ipslist:%1.%2.%3.%4|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.%3.*|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.*.*|block} ^block$
RewriteRule (.*) - [F]
####
#### in whitelist.txt file
####
111.112.113.114 allow
121.122.123.* allow
131.132.*.* allow