需求: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
1
daimaosix 2022-09-20 23:34:30 +08:00
|
3
q792602257 2022-09-21 09:56:41 +08:00 1
其实时你$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; } ``` |
4
q792602257 2022-09-21 09:58:09 +08:00
@q792602257 顺便那个 .(jpg|jpeg)建议改成\.(jpg|jpeg)$ (以.jpg 或者.jpeg 结尾的请求),以避免奇怪的 uri 匹配到了这里
|
5
idragonet OP |