Réglage du Type de Contenu de site web statique hébergés sur AWS S3
Je suis l'hébergement d'un site web statique sur S3. Sur mon site d'Amazon j'ai utiliser le s3cmd outil de ligne de commande. Tout fonctionne bien sauf le réglage du Type de Contenu pour text/html;charset=utf-8
.
Je sais que je peux définir le jeu de caractères dans la balise meta dans le fichier HTML, mais je voudrais l'éviter.
Ici est la commande exacte que j'utilise:
s3cmd --add-header='Content-Encoding':'gzip'
--add-header='Content-Type':'text/html;charset=utf-8'
put index.html.gz s3://www.example.com/index.html
Voici l'erreur que je reçois:
ERREUR: S3 erreur: 403 (SignatureDoesNotMatch): La demande de la signature, nous avons calculé ne correspond pas à la signature que vous avez fournis. Vérifiez votre clé et la signature de la méthode.
Si je supprime le ;charset=utf-8
partie de la commande ci-dessus, il fonctionne, mais le Type de Contenu est défini pour text/html
pas text/html;charset=utf-8
.
OriginalL'auteur cutemachine | 2013-04-20
Vous devez vous connecter pour publier un commentaire.
Processus en deux étapes pour résoudre votre problème.
(1) Mise à niveau de votre installation de S3cmd. La Version 1.0.x n'a pas la capacité de définir le jeu de caractères. Installer à partir d' maître sur github. Master comprend des correctifs pour ce (1) bug et ce (2) bug que suite à l'échec de reconnaître le format du type de contenu et le "appelé avant la définition de" problème dans les versions antérieures.
Pour installer s3cmd de maître sur OSX procédez de la manière suivante:
Assurez-vous que vos bibliothèques python sont dans votre chemin en ajoutant les lignes suivantes à votre .de profil ou de .bashrc ou .zshrc (encore une fois, selon votre système).
mais si vous utilisez homebrew pour pourrait provoquer des conflits ainsi - juste lien symbolique vers l'exécutable.
Fermer la borne et de la rouvrir.
sera encore sortie
(2) une Fois mis à niveau, utilisez:
Si le téléchargement réussit et définit le Contenu de Type "text/html; charset=utf-8" mais vous voyez ce message d'erreur dans le processus:
Je préfère vivre sans python-magie - je trouver que si vous n'avez pas spécifiquement défini le type mime, python-magic souvent se trompe. Installer python-magie, mais assurez-vous de définir le mime-type="application/javascript" dans s3cmd ou python-magic devine "application/x-gzip" si vous gzip votre js localement.
Installer python-magie:
PIP a rompu avec la récente OSX mise à niveau de sorte que vous peut-être besoin de mettre à jour PIP:
Qui va le faire. Tout cela fonctionne avec S3cmd sync trop pas juste de mettre des. Je vous suggère de mettre s3cmd de synchronisation dans un thor-le type de tâche, de sorte que vous n'oubliez pas de définir le type mime sur un fichier particulier (si vous utilisez python-magie sur les fichiers gzip).
C'est un résumé d'un exemple thor tâche pour le déploiement d'une statique Intermédiaire du site s3. Cette tâche vous permet de renommer des fichiers en local et à l'utilisation s3cmd sync plutôt que d'utiliser S3cmd mettre les renommer une par une.
Changé réponse pour refléter le fait que seul le maître - pas le plus tôt paquets de répondre à ces questions.
Ajouté instructions d'installation s3cmd de repo git
Une fois de plus merci pour votre effort de m'aider. Maintenant, il fonctionne presque. J'utilise la commande
s3cmd --add-header="Content-Encoding:gzip" --add-header="Cache-Control:public, max-age=86400" --mime-type="text/html; charset=utf-8" put index.html.gz s3://www.example.com/index.html
. Maintenant, le Type de Contenu est correct, mais l'Encodage de Contenu est faux. Il devrait être gzip, mais il est démontré que l'UTF-8 dans la console AWS.Veuillez noter que je transfert un fichier au format gzip pour le seau: index.html.gz (fichier local) -> index.html (S3)
OriginalL'auteur DPF