在Amazon S3对象上设置noindex

Yar*_*rin 3 ruby amazon-s3 noindex http-headers

我们有一些公开分享的S3文件,我们希望确保这些文件不会被Google编入索引.我似乎无法找到有关如何执行此操作的任何文档.有没有办法在各个S3对象上设置"noindex"x-robots-tag响应头?

(我们正在使用Ruby AWS客户端)

Mic*_*bot 6

似乎没有办法做到这一点.

只有来自S3 PUT对象请求的某些标头被记录为在获取对象时返回.

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html

您发送的任何其他内容似乎都会被忽略,只要它实际上不会使请求无效.

实际上,这是我在研究之前的想法,而且几乎是正确的.

此处文档似乎不完整,其他地方建议以下请求标头(如果与上传一起发送)将显示在下载中:

Cache-Control
Content-Disposition
Content-Encoding
Content-Type
x-amz-meta-*
Run Code Online (Sandbox Code Playgroud)

其他标题列在后一个链接中,但其中一些标题ExpectGET请求没有意义,因此它们在逻辑上不会出现.

到目前为止,这与我对S3的体验一致.

如果您随请求发送随机但无效的标头,则会被忽略.例:

X-Foo: bar
Run Code Online (Sandbox Code Playgroud)

S3似乎在上传时接受了这个,但丢弃它(可能不存储它)...下载对象不会返回X-Foo标题.

X-Robots-Tag似乎是一个无证件的例外.

使用X-Robots-Tag: noindex(例如)上传文件确实会导致与对象一起返回相同的标题和值GET.

除非有人能够引用解释其原因的文档,否则我们将在明显无证的领域中运作.

但是,如果您有兴趣去那里,简单的答案似乎是,您只需将此标头添加到PUT您发送到REST API以上传对象的HTTP 请求中.

"不是那么快,"你说,"我正在使用Ruby SDK." 确实.AWS Ruby客户端似乎太"乐于助人",让您至少可以轻松逃脱.那里文档显示了如何添加"元数据" -

:metadata(哈希) - 要包含在对象中的元数据的哈希值.这些将作为前缀为x-amz-meta的标头发送到S3.每个名称,值对都必须符合US-ASCII.

嗯,这不会起作用,因为你会得到x-amz-meta-x-robots-tag.

如何在上传中设置其他标题?您通常设置的每个其他标头都是选项哈希的元素,例如:cache_control,Cache-Control:在上传请求中变为.除非他们盲目地将该哈希中的密钥应用于上传交易(这将是一个糟糕的设计与优秀的运气相结合),那么你可能没有一种直接的方式从那里到达.我不能更具体,因为我真正了解Ruby的事情与我所知道的Java相同 - 从我所看到的,我不喜欢它.:)

X-Robots-Tag似乎是S3支持的自定义标题,在某种程度上,没有明确的事实记录.它至少被REST API接受了.

如果失败,您可以在上传对象后手动将此标头添加到S3控制台中的元数据中.(注意,X-Foo: Bar从S3控制台也不起作用 - 它被静默丢弃,没有错误 - 但X-Robots-Tag:工作正常).


当然,您也可以在存储桶的根目录中放置一个可公开读取的robots.txt文件(包含相应的指令).这取决于您的合成组合,路径层次结构和其他因素,这些(或许)并不像选择性地设置标题那么简单,但如果整个存储桶由您不希望编入索引的信息组成,它应该很容易实现您想要的,因为如果在robots.txt中不允许内容,则不应将内容编入索引,即使搜索蜘蛛跟随来自其他网站的链接 - 每个域(和子域)的robots.txt文件都是独立的.

  • `robots.txt`与`robots`标题没有相同的结果.即使被禁止使用`robots.txt`,Google仍会为网页编制索引:https://support.google.com/webmasters/answer/6062608?hl = zh-CN. (3认同)