# WooCommerce 付费下载与私有对象

## 付费文件的特殊性

WooCommerce 的可下载商品文件放在 `uploads/woocommerce_uploads/`，本地靠 .htaccess 拒绝直链。进桶之后这个保护消失了——如果桶是公开读、对象键可预测，知道地址就能绕过付费墙。插件用「付费下载目录」策略解决这个问题。

## 三档策略（设置 → 高级 → 付费下载目录）

<table id="bkmrk-%E7%AD%96%E7%95%A5-%E8%A1%8C%E4%B8%BA-%E9%80%82%E5%90%88-%E4%B8%8D%E8%BF%9B%E6%A1%B6%EF%BC%88%E9%BB%98%E8%AE%A4%EF%BC%89-woo"><thead><tr><th>策略</th><th>行为</th><th>适合</th></tr></thead><tbody><tr><td>**不进桶（默认）**</td><td>woocommerce\_uploads 留在服务器，靠本地权限拦截</td><td>大多数站点：付费文件本来就不大，源站直接供下载</td></tr><tr><td>**私有进桶，下载走签名**</td><td>对象以私有 ACL 上传，商品下载地址带签名，知道地址也拿不走</td><td>大文件 / 高下载量，想卸载源站流量</td></tr><tr><td>照常进桶</td><td>跟随全站对象访问设置</td><td>桶本身就是私有 + 签名模式的站点</td></tr></tbody></table>

## 下载地址的自动回退

插件改写商品下载地址前会先确认对象真的在桶里——商家本地直传的文件、已拉回删除的对象，下载地址自动退回本地路径，订单交付不会 404。

## 已经把付费文件传进桶了怎么办

切到「私有进桶」后新对象私有，旧对象还是公开的。用厂商控制台的批量 ACL 工具把旧对象改私有，或拉回本地后再按新策略重新补传。

---