Amazon S3 переписать вопрос перенаправления правил

Мы используем хранилище Amazon S3 для размещения изображений и их миниатюр. Мы загружаем новые изображения без миниатюр, чтобы генерировать их по требованию. Для этого мы используем правила перезаписи S3, которые выглядят так:

<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>mysite.com</HostName>
<ReplaceKeyPrefixWith>/path/to/thumbnail/generator.php?image=</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>

Если миниатюра еще не существует, она будет перенаправлена ​​в наш скрипт, который генерирует новый эскиз, загружает на S3 и отправляет его в ответ. Скрипт работает отлично и делает то, что нам нужно. Проблема заключается в том, что все последующие вызовы вновь созданных миниатюр перенаправляются в сценарий снова и снова, если миниатюра уже доступна в корзине S3 …

Как я могу остановить «следующие перенаправления»?

2

Решение

Статус http по умолчанию, возвращаемый правилами маршрутизации в S3, выглядит так: 301 Moved Permanently, Когда этот код виден, предполагается, что браузер будет использовать новое местоположение для последующих запросов … поэтому поведение, которое вы видите, не совсем неожиданно, в свете этого.

Вместо этого должен быть возвращен «временный» редирект, такой как тот, который вы делаете 302 Found (Технически, 302 это единственная часть, которая имеет значение, некоторые реализации будут использовать 302 Moved Temporarily или другое сообщение). При таком перенаправлении браузеры должны отправлять будущие запросы в исходное местоположение.

С помощью <HttpRedirectCode> переопределить значение по умолчанию должно быть то, что необходимо, чтобы получить намеченное поведение.

<Redirect>
<HttpRedirectCode>302</HttpRedirectCode>
<HostName>example.com</HostName>
<ReplaceKeyPrefixWith>/path/to/thumbnail/generator.php?image=</ReplaceKeyPrefixWith>
</Redirect>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]