在七牛云 CDN ( cdn.siteb.com )上放了一些资源文件(图片和 pdf 文档),是按一定的序列规律命名的,要在一个站上( www.sitea.com )供下载用。 因为想统计下载量,以及不想被[轻而易举]发现命名规律而批量拖文件,就在 sitea 的页面上加了自定义短链接,301 到 CDN 下载。
问题和需求是: CDN 上文件的当前命名与内容关系不大,我期望用户下载时将资源自动重命名为更有意义的文件名。但发现将这个文件名写在链接的 download 属性中并不起作用,查了下是同源策略导致的。 那么,是否有其它办法实现这个目标?可以在程序端或者七牛云那里做什么?前提是不直接更改七牛云 CDN 上的文件名。
其它相关问题: 提供这些文档的目的之一是丰富页面内容,让搜索引擎直接收录它们,并优化整个站点的 SEO。但是我不确定: 上述的 301 处理办法会影响搜索引擎收录吗? 如果在七牛 CDN 那里做鉴权,会影响搜索引擎收录或者 SEO 吗?
1
dog 2019-04-16 10:25:26 +08:00 via iPhone
可以,在又拍云上做过同样的事,等会电脑上找个代码告诉你
|
2
nowheretoseek 2019-04-16 10:49:14 +08:00
@dog 期待,谢谢!
|
3
dog 2019-04-16 11:09:13 +08:00 1
@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 防盗链不冲突,可以共存。 匹配规则要按自己的业务去改,一些名词啥的可能和七牛那边也不一样,但思路应该都是行得通的。 |