2017-05-07 5 views
0

Je reconstruis mon site Web. Le nouveau sera hébergé sur S3 avec CloudFront devant lui.301 Rediriger pour une page spécifique avec CloudFront

Comment créer quelques redirections pour certaines URL qui existaient sur l'ancien site, mais pas sur le nouveau site?

example.com/thing?id=blah par exemple je vais manquerai rediriger vers othersite.com/other-path

+2

Votre exemple doit contenir à la fois l'adresse à partir de laquelle vous redirigez et l'adresse à laquelle vous essayez de rediriger. –

Répondre

1

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.

+0

Très complet! Merci, Luke! C'est génial:) Je vais commencer à l'implémenter maintenant ... – Costa

+0

J'ai des redirections qui ne nécessitent pas de chaînes de requête. J'ai commencé avec ça, mais ils ne fonctionnent pas. Je reçois juste ma page 404 habituelle. Je me demande si c'est parce que je sers mon site à partir du même compartiment S3 que j'ai activé l'hébergement de site statique et répertorié ces redirections? Dois-je créer un compartiment distinct pour les redirections? – Costa

+0

Vous devrez peut-être: donner plus de temps à CF pour mettre à jour après avoir changé l'origine, ou invalider/*. Vous voulez certainement votre même compartiment, avec l'hébergement de site statique activé. –