从七牛云 CDN 下载的文件可以自动重命名吗?

2019-04-16 10:05:22 +08:00
 helloiac

在七牛云 CDN ( cdn.siteb.com )上放了一些资源文件(图片和 pdf 文档),是按一定的序列规律命名的,要在一个站上( www.sitea.com )供下载用。 因为想统计下载量,以及不想被[轻而易举]发现命名规律而批量拖文件,就在 sitea 的页面上加了自定义短链接,301 到 CDN 下载。

问题和需求是: CDN 上文件的当前命名与内容关系不大,我期望用户下载时将资源自动重命名为更有意义的文件名。但发现将这个文件名写在链接的 download 属性中并不起作用,查了下是同源策略导致的。 那么,是否有其它办法实现这个目标?可以在程序端或者七牛云那里做什么?前提是不直接更改七牛云 CDN 上的文件名。

其它相关问题: 提供这些文档的目的之一是丰富页面内容,让搜索引擎直接收录它们,并优化整个站点的 SEO。但是我不确定: 上述的 301 处理办法会影响搜索引擎收录吗? 如果在七牛 CDN 那里做鉴权,会影响搜索引擎收录或者 SEO 吗?

3487 次点击
所在节点    CDN
4 条回复
dog
2019-04-16 10:25:26 +08:00
可以,在又拍云上做过同样的事,等会电脑上找个代码告诉你
nowheretoseek
2019-04-16 10:49:14 +08:00
@dog 期待,谢谢!
dog
2019-04-16 11:09:13 +08:00
@nowheretoseek @helloiac

举例说明

假设存储在 cdn 上的文件是这样放的:/201904/abcd
其中 201904 是按日期归档的文件夹,abcd 是随机文件名,或其它不友好的文件名,不带后缀的那种

从主站 301 跳转到 cdn 的时候,跳转目标为 /201904/abcd/filename.zip
这里的 filename.zip 就是友好文件名、或者数据库记录的原本的文件名,随便

这时肯定是打不开的,要到 cdn 那边搭配一些 rewrite 规则,比如在又拍云里叫 边缘规则,

匹配:^/(.+?)/(.+?)/(.+?).zip$
规则:$ADD_RSP_HEADER(Content-Disposition, attachment, 1) /$1/$2

解释一下就是添加一个响应头,告诉浏览器这是个附件(浏览器会执行下载),然后内部重定向到提取真实文件去,因为请求的时候带了 filename.zip 所以浏览器下载的时候,保存名会默认就是 filename.zip 了

以上是我在又拍云折腾的例子,这套方案跟 token 防盗链不冲突,可以共存。
匹配规则要按自己的业务去改,一些名词啥的可能和七牛那边也不一样,但思路应该都是行得通的。
helloiac
2019-04-16 11:42:51 +08:00
@dog 谢谢,我在七牛云没有找到类似设置项,已提工单咨询。

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

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

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

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

© 2021 V2EX