2017-10-06 163 views
1

我在代理IPv6请求地址时遇到了问题。使用IPv6 IP地址的重写规则不起作用

上的.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

这是因为[ & ]。 Thay通常不被允许在URL中,因此服务器将其转义为%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

+0

这种简单的解决方案解决了我的问题和IPv6一直很好。我在谷歌上搜索过每一页,但没有发现任何内容。这是一个非常简单的解决方案。谢谢。问候 – vdTOG