2017-12-22 11 views
0

Ich hosste meine statische Website (mit Jekyll gebaut) auf Amazon S3. Für S3-Buckets müssen die URLs mit .html enden. Da ich saubere URLs möchte, ging ich voran und fügte dem permalink Attribut in meinem _config.yml einen Schrägstrich hinzu. Nun sind meine Links wie https://blog.domain.com/2017/07/post-slug/Alternative zum abschließenden Schrägstrich in permalink Amazon S3 statisches Site-Hosting (BitBucket Pipelines und s3_website)

Dies bedeutet, dass jeder Beitrag im Blog einen separaten Ordner und eine index.html innerhalb haben würde.

Was sind die Nachteile zu diesem Ansatz? Oder gibt es einen alternativen Ansatz zum Verschieben und Umbenennen von Dateien, wie in this post beschrieben?

Alle meine bisherigen Versuche, die Erweiterung programmatisch zu entfernen und den Dateityp zu setzen, waren aufgrund des Setups, das ich verwende, nicht erfolgreich.

Antwort

2

S3-Buckets können HTML-Dateien liefern, die nicht mit .html enden, wenn Sie beim Hochladen den richtigen MIME-Typ festlegen.

Zuerst kopieren Sie die Dateien ohne Erweiterung:

aws s3 cp _site/ <your_bucket> --content-type text/html --recursive --exclude "*.*" 

dann auf Dateien mit Endung .html:

aws s3 cp _site/ <your_bucket> --recursive --exclude "*" --include "*.*" 

Ich habe diese Methode wurde verwendet und schrieb einen Artikel here, dass ich glaube, Sie könnten nützlich finden.

+0

Hey @ marcanuy, danke dafür! Ich benutze BitBucket Pipelines, um die Site auf S3 zu erstellen und zu implementieren. 's3_website' schiebt den Inhalt nach S3. Ich werde versuchen einen Ansatz ähnlich dem 'aws s3 cp' und rückgängig zu machen. –

+0

Das hat funktioniert! Ich habe einen Schritt hinzugefügt, um die HTML-Dateien wie in Ihrem Post erwähnt umzubenennen: 'find _site/-type f! -iname 'index.html' -iname '* .html' -print0 | während gelesen -d $ '\ 0' f; do mv "$ f" "$ {f% .html}"; fertig. Während es funktioniert, ohne den MIME-Typ (für jetzt) ​​zu setzen, sollte ich nach einer Möglichkeit suchen, den MIME-Typ explizit festzulegen. Danke eine Tonne! –

+0

@RamIyer gut, ich musste den Dateiinhaltstyp explizit festlegen oder s3 wird es nicht als HTML-Datei erkennen, möglicherweise können Sie das je nach Ihrer Bucket-Standardkonfiguration weglassen. – marcanuy

Verwandte Themen