如何在 nginx 中重写带有“#”符号的路径

How to rewrite a path with a '#' sign in nginx

我有一个格式为 www.example.com/aaawww.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 问题描述了如何做到这一点: