我在 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::d 3%5d:80/path/index.html
这是因为[
和]
。通常不允许在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