54 votes

Amazon S3 objet de redirection

Est-il possible de mettre une redirection en-tête sur un s3-objet? Comme une redirection 301.

Par exemple:

mybucket.amazon-aws.com/myobject --> example.com/test

De préférence par la fixation d'un en-tête de ce genre sur l'objet:

HTTP/1.1 301 Moved Permanently
Location: http://example.com/test
Content-Type: text/html
Content-Length: 0

47voto

Layke Points 10216

Au cours du dernier mois, cette fonctionnalité vient d'être ajoutée.

Vous pouvez trouver la documentation de l'API ici:

http://docs.amazonwebservices.com/AmazonS3/latest/dev/how-to-page-redirect.html

Lorsque vous METTEZ votre objet, vous devez définir l' x-amz-website-redirect-location - clés à l'encontre de l'objet de la redirection 301 que vous souhaitez utiliser.

Vous pouvez également utiliser la console.

enter image description here

15voto

Dmitriy Sukharev Points 469

Dans le cas où si hébergement de sites web est activée pour le seau, il existe une autre façon d'ajouter de la redirection 301. Selon elle, les règles de redirection sont décrites sur le seau niveau en format XML, et peut être spécifié dans un seau de propriétés via AWS S3 Console (Hébergement de Site Statique de la section). Documentation complète sur sa syntaxe peut actuellement être trouvé ici.

Cette approche est pratique lorsque vous avez massive URL mouvements aussi loin qu'il est plus facile de gérer toutes les redirections en un seul endroit. Par exemple, il est possible de définir des règles de redirection

<RoutingRule>
    <Condition>
        <KeyPrefixEquals>index.php</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <ReplaceKeyWith>index.html</ReplaceKeyWith>
    </Redirect>
</RoutingRule>
<RoutingRule>
    <Condition>
        <KeyPrefixEquals>blog.php?id=21</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <ReplaceKeyWith>mysql-utf-8-database-creation-snippet.html</ReplaceKeyWith>
    </Redirect>
</RoutingRule>

On dirait que c'est la même chose que de créer de faux objets et en précisant x-amz-site web-redirection des métadonnées de localisation pour eux. Les mauvaises nouvelles sont qu'il y a peut-être pas plus de 50 de ces règles en XML pour un seau. Et oui, il n'est pas commode de gérer le XML. Mais pour moi, cette façon est plus facile à l'heure actuelle. Encore une fois, parce qu'il est plus facile de gérer tous les fichiers en un seul endroit.

Ce XML approche est extrêmement utile lorsque vous vous, dites, de les renommer un répertoire avec beaucoup de pages. Dans ce cas, il est nécessaire de créer une seule règle de redirection de répertoire, au lieu de la règle distincte pour chaque page à l'intérieur. Par exemple

<RoutingRule>
    <Condition>
        <KeyPrefixEquals>blog/</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <ReplaceKeyPrefixWith>it-blog/</ReplaceKeyPrefixWith>
    </Redirect>
</RoutingRule>

Selon cette règle, example.com/blog/whatever allez être redirigé vers example.com/it-blog/whatever.

Une autre caractéristique utile de cette approche est qu'il ne remplace que les préfixes. De la même façon qu'avec les répertoires, il est possible pour rediriger la page, mais enregistrer les paramètres de la requête. Il pourrait être adapté s'il y a du JS de traitement de ces requêtes les paramètres. Avec x-amz-site web-redirection des métadonnées de localisation, vous aurez probablement à les détacher.

Comme je l'ai mentionné l'écriture et la lecture du XML peut être gênant. Pour surmonter ce que j'ai écrit un simple outil en ligne dans GWT pour convertir en texte brut avec la nouvelle et l'ancienne Url au format XML. Il utilise le KeyPrefixEquals de prédicat et d'exécuter ReplaceKeyPrefixWith redirection.

Enfin, selon la documentation, si l'hébergement du site est désactivé, le support de redirection n'est pas applicable pour ce compartiment.

7voto

seva.lapsha Points 88

7voto

Layke Points 10216

Edit: Voir réponse ci-dessus que cette fonctionnalité est désormais native dans AWS

Pas vraiment non. Il n'y a pas intégré la fonction qui permet cela, cependant, ce que vous pouvez faire est de créer votre objet et même si vous n'avez pas l'enregistrer au format HTML, vous pouvez l'appliquer en tant que fichier HTML.

Par exemple:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Refresh" content="0; URL=http://www.example.com/target/">
    <title>Redirect</title>
</head>

<body>
    <a href="http://www.example.com/target/">http://www.example.com/target/</a>
</body>
</html>

Regardez sur cette page ici: voir la source sur elle rapidement.

view-source:http://carltonbale.com.s3.amazonaws.com/distance_chart.png

Vous pouvez voir une explication ici:

Point 8: http://carltonbale.com/9-hidden-features-of-amazon-s3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X