Nginx作为Apache前端时如何实现指定图片文件的永久重定向
Nginx实现指定图片永久重定向的配置方案
你可以根据重定向规则的数量选择以下两种方案中的任意一种,原有配置不需要做修改,只需新增对应重定向规则即可:
方案1:rewrite规则实现(适合规则较少的场景)
将rewrite规则写在server块内部、所有location块之前即可,精确匹配路径避免误匹配:
# 新增重定向规则,放在所有location块之前 rewrite ^/deleted_dir/some_image.gif$ /image/some_image.gif permanent; rewrite ^/deleted_dir/other_image.gif$ /image/new_image.jpg permanent; # 原有配置保持不变 location / { expires 15m; proxy_pass http://127.0.0.1:8080; } location ~* \.(jpg|gif|png|ico|svg)$ { expires 1M; }
说明:
- 规则里的
permanent参数对应301永久重定向,和Apache的Redirect permanent效果完全一致 - 路径前后加
^和$是做精确匹配,避免误匹配其他包含相同路径片段的请求
方案2:精确location匹配实现(适合规则较多的场景)
精确匹配的location优先级高于正则匹配,性能比rewrite更好,规则多的时候更推荐:
# 新增精确匹配的重定向规则 location = /deleted_dir/some_image.gif { return 301 /image/some_image.gif; } location = /deleted_dir/other_image.gif { return 301 /image/new_image.jpg; } # 原有配置保持不变 location / { expires 15m; proxy_pass http://127.0.0.1:8080; } location ~* \.(jpg|gif|png|ico|svg)$ { expires 1M; }
说明:
- 精确匹配优先级最高,匹配到指定路径后会直接执行重定向,不会进入后面的图片后缀匹配块,完全不影响原有图片的缓存规则
- 配置修改完成后执行
nginx -s reload平滑重启生效
内容的提问来源于stack exchange,提问作者hapx
相关产品推荐
相关产品推荐

