.htaccess - htaccess mod_rewrite 允许 ipv6

标签 .htaccess mod-rewrite syntax ipv6

我想允许两个不同的 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/

相关文章:

php - 使用 htaccess 和 php 创建假的子目录并保持现有目录不变

.htaccess - htaccess 具有多个变量和 "dummy"目录

.htaccess 在删除 php 扩展和内部重定向时抛出文件夹

javascript - 意外的标记 -

php - PHP中的 ' and "有什么区别?

regex - .htaccess 重定向模式

apache - .htaccess 在不是 www 时强制 ssl

apache - 如何将 https ://example. com/重定向到 https ://www. example.com/

apache - mod_rewrite : replace query_string parameter values

c++ - C 喜欢数组语法?