如何在 nginx 中重写带有“#”符号的路径
How to rewrite a path with a '#' sign in nginx
我有一个格式为 www.example.com/aaa
和 www.example.com/aaa#bbb
的路径,我想将它重定向到 www.example.com
我试过:
if ($uri ~ ^/(.*)(#.*)?) {
rewrite ^/(.*)(#.*)? / permanent;
}
我什至试过#。如果阻塞,它似乎会进入内部。它替换了第一部分,但第二部分附加到 url。新的 url 变成了 www.example.com/#bbb
URL 中的散列(#
之后 URL 的部分)在设计上不会在 HTTP 请求中发送。因此,nginx 对此无能为力。当用户访问 http://example.com/#aaa
时,nginx 只看到 http://example.com
的请求
一个可能的解决方法是在前端使用 Javascript 从 URL 中删除散列。另一个 Stack Overflow 问题描述了如何做到这一点:
我有一个格式为 www.example.com/aaa
和 www.example.com/aaa#bbb
的路径,我想将它重定向到 www.example.com
我试过:
if ($uri ~ ^/(.*)(#.*)?) {
rewrite ^/(.*)(#.*)? / permanent;
}
我什至试过#。如果阻塞,它似乎会进入内部。它替换了第一部分,但第二部分附加到 url。新的 url 变成了 www.example.com/#bbb
URL 中的散列(#
之后 URL 的部分)在设计上不会在 HTTP 请求中发送。因此,nginx 对此无能为力。当用户访问 http://example.com/#aaa
时,nginx 只看到 http://example.com
一个可能的解决方法是在前端使用 Javascript 从 URL 中删除散列。另一个 Stack Overflow 问题描述了如何做到这一点: