2014-09-11 4 views
2

У нас есть некоторые общедоступные S3-файлы, которые мы хотим удостовериться, что они не будут проиндексированы Google. Кажется, я не могу найти документацию о том, как это сделать. Есть ли способ установить заголовок ответа «noindex» x-robots-tag на отдельных объектах S3?Настройка noindex на объектах Amazon S3

(Мы используем клиент рубин AWS)

ответ

3

Там же не , как представляется, способ сделать это.

Только определенные заголовки из запроса объекта S3 PUT документируются как возвращаемые, когда объект извлекается.

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

Все остальное вы посылаете, кажется, просто игнорируются, до тех пор, как он на самом деле не аннулирует запрос.

На самом деле, это то, что я думал, прежде чем исследовать это, и это почти true.

documentation here кажется неполным, и elsewhere предлагает следующие заголовки запроса, если они отправлены с загрузкой, появится в загрузке:

Cache-Control 
Content-Disposition 
Content-Encoding 
Content-Type 
x-amz-meta-* 

Другие заголовки перечислены в последней ссылке, но некоторые из них, как Expect не имеет смысла в запросе GET, поэтому они логически не отображаются.

Пока все это соответствует моему опыту с S3.

Если вы отправляете случайный, но недействительный заголовок с вашим запросом, он игнорируется. Пример:

X-Foo: bar 

S3, кажется, принимает это при загрузке, но отбрасывает его (предположительно не хранит его) ... загружая объект не возвращает заголовок X-Foo.

Но X-Robots-Tag представляется недокументированным исключением из этого.

Загрузка файла с помощью X-Robots-Tag: noindex (например) действительно приводит к тому, что один и тот же заголовок и значение возвращаются вместе с объектом при GET.

Если кто-то не может ссылаться на документацию, которая объясняет, почему это работает, мы работаем на явно недокументированной территории.

Но, если вы заинтересованы в том, чтобы отправиться туда, просто ответьте на этот вопрос, просто добавьте этот заголовок в запрос HTTP PUT, который вы отправляете в REST API для загрузки объекта.

«Не так быстро», вы говорите: «Я использую Ruby SDK». В самом деле. Клиент AWS Ruby, похоже, слишком «полезен», чтобы позволить вам избежать этого, по крайней мере, нелегко. docs there показать, как добавить «метаданные» -

:metadata (Hash) - хэш метаданных, которые будут включены с объектом. Они будут отправлены на S3 в виде заголовков с префиксом x-amz-meta.Каждое имя, пара значений должно соответствовать US-ASCII.

Ну, это не сработает, потому что вы получите x-amz-meta-x-robots-tag.

Как вы устанавливаете другие заголовки в загрузке? Каждый другой заголовок, который вы обычно установили, является элементом хэша опций, например :cache_control, который превращается в Cache-Control: в запрос на загрузку. Если они не будут слепо применять ключи от этого хеша к транзакции загрузки (что было бы ужасным дизайном в сочетании с отличной удачей), то у вас может не быть простого способа добраться сюда оттуда. Я не могу быть более конкретным, потому что единственное, что я действительно знаю о Ruby, - это то же самое, что я знаю о Java - от того, что я видел, мне это не нравится. :)

Но X-Robots-Tag выглядит как пользовательский заголовок. S3 в некоторой степени поддерживает без четкой документации об этом факте. Это, по крайней мере, принято API REST.

Невыполнение вышеуказанного, вы можете вручную добавить этот заголовок к метаданным в консоли S3 после загрузки объекта. (Примечание: X-Foo: Bar не работает с консоли S3: либо он отбрасывается без ошибок, но без ошибок - но X-Robots-Tag: отлично работает).


Вы также можете, конечно, поставить публично читаемый файл robots.txt (с соответствующими директивами в нем) в корне ведра. В зависимости от вашего cobtent mix, иерархии путей и других факторов, которые не являются (возможно) такими же простыми, как выборочная настройка заголовков, но если все ведро состоит из информации, которую вы не хотите индексировать, она должна легко выполнить то, что вы хотите , так как контент не следует индексировать, если он запрещен в файле robots.txt, даже если поисковый паук следует по ссылке на него с другого сайта - каждый файл robots.txt каждого домена (и поддомена) стоит отдельно.

+0

Спасибо, хотя кажется, что должно быть * some * way. Как [** Bucket Explorer **] (http://www.bucketexplorer.com/documentation/amazon-s3-how-to-manage- http-headers-for-amazon-s3-objects.html) и [** Cloudberry **] (http://www.cloudberrylab.com/blog/how-to-set-custom-http-headers-for-amazon -s3-objects-with-cloudberry-explorer /) сделать это? – Yarin

+0

Сначала я предположил, что они этого не сделали, но посмотрите массивное правление, выше ... API REST необъяснимо принимает этот заголовок, недокументированный, насколько я могу судить. –

+0

Браво - вы пошли выше и дальше с этим ответом, я очень ценю усилия! – Yarin

Смежные вопросы