我想允许两个不同的 IP,一个是版本 4,第二个是版本 6。对于 ipv4,它工作正常,但我不知道允许 ipv6 的正确语法是什么。 ipv6 的示例为 2001:718:1001:500:300:7ede:9ac1:8a68
这是我所拥有的:
RewriteCond %{REMOTE_ADDR} !^213\.168\.132\.69 # works
RewriteCond %{REMOTE_ADDR} !^2001\:718\:1001\:500\:300\:7ede\:9ac1\:8a68 # doesn't works
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]
最佳答案
您的RewriteCond
行必须以mod_rewrite期望的方式与地址完全匹配。 :
不需要转义。为了做到这一点,您可以使用以下命令打开 mod_rewrite 日志记录:
LogLevel rewrite:trace1
之后您将在日志文件中看到客户端的 IP 地址。我的显示为:
... mod_rewrite.c(468): [client 2a00:8640:1:0:c0b7:d175:5b0d:66f:51460] ...
最后一位是端口号,因此请将其保留。我在 mod_rewrite 规则中使用了 2a00:8640:1:0:c0b7:d175:5b0d:66f
并且它起作用了。
关于.htaccess - htaccess mod_rewrite 允许 ipv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969376/