首页 > 解决方案 > RewriteCond %{REMOTE_ADDR} [IPv4] 阻止捕获 IP 范围?

问题描述

带有 IPv4 的 RewriteCond %{REMOTE_ADDR} 捕获 IP 范围。例子:

RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.89
# catch 123.45.67.89
RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.8
# catch 123.45.67.8[0-9]

# or as omit
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89
...

最终抓住它更多。我没有进一步测试。我的实际 IP 是(类似于示例)“123.45.67.89”。

RewriteCond 用于 RewriteRule 将临时重写为 maintenance.php。我插入我的IP。只有我的 IP 不会重写到 maintenance.php。

RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89
RewriteRule . maintenance.php [QSA,NC,L]
RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.89
RewriteRule . index.php [QSA,NC,L]

将它与 IP 123.45.67.89 一起使用,我就变成了 index.php。将它与 IP 123.45.67.8 一起使用,我就变成了 index.php。将它与 IP 123.45.67.890 一起使用,我就变成了 maintenance.php。我如何防止捕获/省略超过我的 IP 地址?此外,我有动态 IP 地址。我的 IP 可能是 123.45.67.8。

编辑:感谢@anubhava。
解决方案:^123\.45\.67\.89$

标签: .htaccess

解决方案


我的实际 IP 是(类似于)123.45.67.89。如何防止捕获/省略超过我的 IP 地址?此外,我有动态 IP 地址。我的IP可能是123.45.67.8

如果您只想匹配单个 IP,那么您将不得不使用硬编码该 IP

RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$

请注意,您需要对 IP 地址中的点进行转义,以避免它与任何字符匹配。

你的规则可以是这样的:

RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteRule . maintenance.php [L]

RewriteRule . index.php [L]

推荐阅读