请教:希望全部 jpg 301 到另外一个域名

2022-09-20 22:41:39 +08:00
 idragonet

需求:A.com 全部图片 301 到 B.com,例如 https://www.a.com/img/499eb411b48c2c1f51832d35441b5fe61527179630.jpg https://cdn1.b.com/img/499eb411b48c2c1f51832d35441b5fe61527179630.jpg

Nginx 做如下配置: location ~* .(jpg|jpeg) { return 301 https://cdn1.b.com.cn$1; }

可是访问: https://www.a.com/img/499eb411b48c2c1f51832d35441b5fe61527179630.jpg 为什么变成了 301 到: https://cdn1.b.com.cn/jpg

1349 次点击
所在节点    NGINX
5 条回复
daimaosix
2022-09-20 23:34:30 +08:00
location ~* \.(gif|jpg|jpeg)$ {
return 301 https://cdn1.b.com.cn/$1;
}
idragonet
2022-09-21 08:45:02 +08:00
@daimaosix 奇怪,问题依旧。
q792602257
2022-09-21 09:56:41 +08:00
其实时你$1 引用的内容不对,在 location 中你用括号匹配了 jpg|jpeg ,导致$1 变量设置成了匹配到的值( jpg 或者 jpeg ),这里根据你的需求,可以用 https://cdn1.b.com.cn$request_uri;

修改后的配置:
```
location ~* .(jpg|jpeg) {
return 301 https://cdn1.b.com.cn$request_uri;
}
```
q792602257
2022-09-21 09:58:09 +08:00
@q792602257 顺便那个 .(jpg|jpeg)建议改成\.(jpg|jpeg)$ (以.jpg 或者.jpeg 结尾的请求),以避免奇怪的 uri 匹配到了这里
idragonet
2022-09-21 10:26:35 +08:00
@q792602257 谢谢,这样搞定了

location ~* \.(jpg|jpeg) {
return 301 $scheme://cdn1.b.com.cn$request_uri;
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX