【问题标题】:RewriteRule with an IPv6 IP address does not work具有 IPv6 IP 地址的 RewriteRule 不起作用
【发布时间】:2017-10-06 16:12:55
【问题描述】:

我在代理 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

【问题讨论】:

    标签: apache mod-rewrite ipv6


    【解决方案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

    【讨论】:

    • 这个简单的解决方案解决了我的问题,并且 IPv6 运行良好。我在谷歌上搜索了每一页,但没有发现任何明确的内容。这是一个非常简单的解决方案。谢谢你。问候
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2012-08-23
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多