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

发布于 2022-09-06 09:10:38 字数 1477 浏览 30 评论 0

我有个地址,必须带#引用远程的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. 或者不这么写,有什么办法吗? 貌似伪静态不行,但不确定。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傻比既视感 2022-09-13 09:10:38

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

如梦亦如幻 2022-09-13 09:10:38

已找到解决办法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文