Vous ne pouvez pas faire réoriente dans CloudFront, mais depuis votre origine est S3, vous pouvez le faire réoriente en cela. Tout d'abord, vous devez vous assurer que votre origine CloudFront pour s3 est correctement configurée. Vous ne pouvez pas effectuer de redirection de site Web avec l'API REST standard (qui est l'option de saisie semi-automatique).
Entrez le point de terminaison d'hébergement de site Web statique Amazon S3 pour votre compartiment. Cette valeur apparaît dans la console Amazon S3, sur la page Propriétés sous Hébergement de sites Web statiques. Lorsque vous spécifiez le nom du compartiment dans ce format, vous pouvez utiliser les redirections Amazon S3 et les documents d'erreur personnalisés Amazon S3.
(Source: Using Amazon S3 Origins and Custom Origins for Web Distributions)
Ensuite, si votre redirection de liens ont effectivement des paramètres de requête dans les dont vous avez besoin être évaluées à partir, vous devrez make sure CloudFront is configured to forward query parameters. Je devrais noter, je n'ai jamais eu à construire des redirections dans s3 cette clé des paramètres de chaîne de requête, mais selon this SO answer cela devrait être possible.
avant tout, cache basé sur tous
Choisissez cette option si votre serveur d'origine retourne différentes versions de vos objets pour tous les paramètres de chaîne de requête.
(Source: Query String Forwarding and Caching)
Enfin, set up your S3 bucket with Routing Rules pour les réoriente souhaitées. Compte tenu de votre exemple, il ressemblerait à quelque chose comme ceci:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>thing?id=blah</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>other-path</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
(Source: Syntax for Specifying Routing Rules)
Le dernier point de porter à votre attention serait la syntaxe de routage eux-mêmes règles. La condition placée sur votre règle de routage est KeyPrefixEquals
. Il n'y a pas de KeyEquals
Condition disponible.
Cela signifie que si vous avez par exemple eu thing?id=blah
et thing?id=blah2
Règles de routage, l'ordre aura de l'importance. Mettez blah2
avant blah
, ou vous obtiendrez toujours le blah
.
Il existe de nombreuses autres options de règles de routage disponibles, qui vous permettent de modifier le protocole, de rediriger vers un autre domaine au lieu de simplement réécrire le chemin, etc. Consultez le documentation on routing rules pour plus d'informations.
Votre exemple doit contenir à la fois l'adresse à partir de laquelle vous redirigez et l'adresse à laquelle vous essayez de rediriger. –