关于Nginx location地址中包含#的处理?

2.0版本上线 修改了页面地址 为了兼容老的地址 想通过Nginx来代理老的地址

# 代理老的页面到新页面
location /data/#/stock/101017958/details {
    proxy_pass https://foo.bar.com/m/stock/details/101017958;
 }

但是Nginx配置并未生效 当访问老的地址的时候 还是老的页面 并没有访问新页面 是什么原因呢 是因为location中包含了#号了吗?

阅读 12.5k
4 个回答

#在配置文件里是注释的开始, 你的nginx配置文件不可能是有效有。用nginx -t 检查一下。
另外,#也不应是url的一部分, #后面是页面里的锚点,前端把这个处理成请示的参数,但后端很少有这么用的。

url里,#和它后面的东西并不会发给服务器,也就无法做处理

#只用于浏览器,请求的时候,#及后面的内容不会发送给服务器

补充:
参考文档: https://juejin.im/post/5be247c2e51d457b1756b8a4

  1. 包含#符号的url就是一个 Fragment URL。#指定了网页中的一个位置
  2. #仅仅作用于浏览器,它不会影响服务器端。所以http请求中不会包括#
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题