具有IPv6 IP地址的RewriteRule不起作用

时间:2017-10-06 16:12:55

标签: apache mod-rewrite ipv6

我在IPv6地址内代理请求时遇到问题。

在.htaccess / apache2.conf上,我知道了:

RewriteRule (.*) http://18.4.15.8:80/path/$1 [P,L]

它工作正常,因为它是一个IPv4地址。 但是,它不起作用:

RewriteRule (.*) http://[27:ec:20:22:15::d3]:80/path/$1 [P,L]

为什么?

错误日志:

  

代理错误

     

您的浏览器发送了此服务器无法理解的请求。   代理服务器无法处理请求GET /index.html。

     

原因:无法解析URI:http://%5b27:ec:20:22:15::d3%5d:80/path/index.html

1 个答案:

答案 0 :(得分:1)

这是因为[& ]。通常不允许在URL中使用Thay,因此服务器将其转发到%b5%5d。为防止这种情况,请在重写规则中使用NE标记:

RewriteRule (.*) http://[27:ec:20:22:15::d3]:80/path/$1 [NE,P,L]

https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne