nginx url跳转,结果无效,怎么解决?

我有个地址,必须带#引用远程的svg图片,因为只有这样才能在html里直接用use标签引用过来。域名不一样存在跨域问题,不让调用,于是用nginx做跳转且url地址不变。

比如真正的文件路径是:
https://www.aaa.com/icons/homes.svg

远程上的地址是:
https://cdn.aaa.com/icons/homes.svg

这个是homes.svg的文件

<svg xmlns="http://www.w3.org/2000/svg">
    <symbol id="homes" viewBox="0 0 1024 1024">
        <path d="M956.527709 843.236073..."></path>
    </symbol>
    ..........
    ...more...
    ..........
    <symbol id="star" viewBox="0 0 1024 1024">
        <path d="M956.527709 843.236073..."></path>
    </symbol>
</svg>

我在 https://www.aaa.com/ 页面中想用这个方式来写,注意看路径部分

<svg viewBox="0 0 1024 1024"><use xlink:href="/res/icon/homes"></use></svg>

实际上是访问的这个路径

<svg viewBox="0 0 1024 1024"><use xlink:href="/res/icon/homes.svg#homes"></use></svg>

于是我就这样写了配置,正则我测试过,没错

location /res/icons/{
    rewrite /res/icons/(.*?)$ /svg/$1.svg\#$1 break;
    proxy_pass https://cdn.aaa.com;
}
  1. 结果没有效果,应该怎么办?
  2. 如果是认为#后面都是注释,有没有什么办法,不让nginx当做是注释?就像转义字符一样。
  3. 或者不这么写,有什么办法吗? 貌似伪静态不行,但不确定。
阅读 7.2k
2 个回答

资源后面的#号不会随着请求代入的,也就是你nginx上面不会看到#号以及后面的内容的,根本不需要匹配

已找到解决办法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题