(Optional) Konfigurieren einer Webseitenumleitung - Amazon Simple Storage Service

(Optional) Konfigurieren einer Webseitenumleitung

Wenn Ihr Amazon-S3-Bucket für das statische Website-Hosting konfiguriert ist, können Sie Umleitungsregeln für Ihren Bucket oder die darin enthaltenen Objekte konfigurieren. Sie haben die folgenden Optionen für die Konfigurierung einer Umleitung.

Umleiten von Anforderungen für den Website-Endpunkt Ihres Buckets an einen anderen Bucket oder eine andere Domäne

Sie können alle Anforderungen für einen Website-Endpunkt eines Buckets an einen anderen Host umleiten. Wenn Sie alle Anforderungen umleiten, werden alle Anforderungen an den Website-Endpunkt an den angegebenen Bucket oder die Domäne umgeleitet.

Beispiel: Wenn Ihre Root-Domain example.com ist, und Sie Anfragen sowohl für http://example.com, als auch für http://www.example.com bedienen möchten, erstellen Sie zwei Buckets namens example.com und www.example.com. Pflegen Sie dann den Inhalt im Bucket example.com und konfigurieren Sie den anderen Bucket www.example.com so, dass alle Anforderungen an den Bucket example.com umgeleitet werden. Weitere Informationen finden Sie unter Konfigurieren einer statischen Website mit einem benutzerdefinierten Domänennamen.

So leiten Sie Anforderungen für einen Bucket-Website-Endpunkt um

  1. Öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie unter Buckets den Namen des Buckets aus, von dem Sie Anfragen umleiten möchten (z. B. www.example.com).

  3. Wählen Sie Properties (Eigenschaften).

  4. Wählen Sie unter Static website hosting (Hosting statischer Websites) Edit (Bearbeiten) aus.

  5. Wählen Sie Redirect requests for an object (Anfragen für ein Objekt umleiten).

  6. Geben Sie im Feld Host name (Host-Name) den Website-Endpunkt für Ihren Bucket oder Ihre benutzerdefinierte Domäne ein.

    Wenn Sie Anforderungen beispielsweise zu einer Root-Domänenadresse umleiten, geben Sie ei example.com.

  7. Wählen Sie unter Protocol (Protokoll) das Protokoll für die umgeleiteten Anfragen (none (kein), http oder https).

    Wenn Sie kein Protokoll angeben, ist die Standardoption none (kein).

  8. Wählen Sie Save Changes (Änderungen speichern).

Konfigurieren von Umleitungsregeln für die Verwendung von fortschrittliche bedingten Umleitungen

Unter Verwendung fortschrittliche Umleitungsregeln können Sie bedingt Anfragen abhängig von bestimmten Objektschlüsselnamen oder Präfixen in der Anfrage weiterleiten, oder abhängig von Antwortcodes. Angenommen, Sie löschen ein Objekt in Ihrem Bucket oder benennen es um. Sie können eine Weiterleitungsregel hinzufügen, die die Anfrage an ein anderes Objekt weiterleitet. Wenn Sie einen Ordner nicht zur Verfügung stellen wollen, können Sie eine Umleitungsregel hinzufügen, um die Anfrage an eine andere Webseite umzuleiten. Sie können auch eine Weiterleitungsregel hinzufügen, um Fehlerbedingungen zu verarbeiten, indem Sie Anfragen, die den Fehler zurückgeben, an eine andere Domäne weiterleiten, wenn der Fehler verarbeitet wird.

Wenn Sie das statische Website-Hosting für Ihren Bucket aktivieren, können Sie optional fortschrittliche Umleitungsregeln angeben. Amazon S3 hat eine Begrenzung von 50 Routingregeln pro Websitekonfiguration. Wenn Sie mehr als 50 Routingregeln benötigen, können Sie die Objektumleitung verwenden. Weitere Informationen finden Sie unter Verwenden der S3-Konsole.

Weitere Informationen zum Konfigurieren von Routingregeln mit der REST-API finden Sie unter PutBucketWebsite in der Amazon Simple Storage Service-API-Referenz.

Wichtig

Um Umleitungsregeln in der neuen Amazon-S3-Konsole zu erstellen, müssen Sie JSON verwenden. JSON-Beispiele finden Sie unter Beispiele für Umleitungsregeln.

So konfigurieren Sie Umleitungsregeln für eine statische Website

Gehen Sie folgendermaßen vor, um Umleitungsregeln für einen Bucket hinzuzufügen, für den das statische Website-Hosting bereits aktiviert ist.

  1. Öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Liste Buckets (Buckets) den Namen eines Buckets aus, den Sie als statische Website konfiguriert haben.

  3. Wählen Sie Properties (Eigenschaften).

  4. Wählen Sie unter Static website hosting (Hosting statischer Websites) Edit (Bearbeiten) aus.

  5. Geben Sie im Feld Redirection rules (Umleitungsregeln) Ihre Umleitungsregeln in JSON ein.

    In der S3-Konsole beschreiben Sie die Regeln mit JSON. JSON-Beispiele finden Sie unter Beispiele für Umleitungsregeln. Amazon S3 hat eine Begrenzung von 50 Routingregeln pro Websitekonfiguration.

  6. Wählen Sie Save Changes (Änderungen speichern).

Routingregel-Elemente

Das Folgende ist eine allgemeine Syntax zum Definieren der Routingregeln in einer Website-Konfiguration in JSON und XML. Zum Konfigurieren von Umleitungsregeln in der neuen S3-Konsole müssen Sie JSON verwenden. JSON-Beispiele finden Sie unter Beispiele für Umleitungsregeln.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "string", "KeyPrefixEquals": "string" }, "Redirect": { "HostName": "string", "HttpRedirectCode": "string", "Protocol": "http"|"https", "ReplaceKeyPrefixWith": "string", "ReplaceKeyWith": "string" } } ] Note: Redirect must each have at least one child element. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.
XML
<RoutingRules> = <RoutingRules> <RoutingRule>...</RoutingRule> [<RoutingRule>...</RoutingRule> ...] </RoutingRules> <RoutingRule> = <RoutingRule> [ <Condition>...</Condition> ] <Redirect>...</Redirect> </RoutingRule> <Condition> = <Condition> [ <KeyPrefixEquals>...</KeyPrefixEquals> ] [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] </Condition> Note: <Condition> must have at least one child element. <Redirect> = <Redirect> [ <HostName>...</HostName> ] [ <Protocol>...</Protocol> ] [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] [ <ReplaceKeyWith>...</ReplaceKeyWith> ] [ <HttpRedirectCode>...</HttpRedirectCode> ] </Redirect> Note: <Redirect> must have at least one child element. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.

In der folgenden Tabelle werden die Elemente in der Weiterleitungsregel beschrieben.

Name Beschreibung
RoutingRules Container für eine Sammlung von RoutingRule-Elementen.
RoutingRule

Eine Regel, die eine Bedingung identifiziert, sowie die Weiterleitung, die angewendet wird, wenn die Bedingung erfüllt ist.

Bedingung:

  • Ein RoutingRules-Container muss mindestens eine Weiterleitungsregel enthalten.

Condition

Container für die Beschreibung einer Bedingung, die für die angegebene Weiterleitung erfüllt sein muss, damit sie angewendet wird. Wenn die Weiterleitungsregel keine Bedingung enthält, wird die Regel auf alle Anfragen angewendet.

KeyPrefixEquals

Das Präfix des Objektschlüsselnamens, von dem die Anfragen weitergeleitet werden.

KeyPrefixEquals ist erforderliche, wenn HttpErrorCodeReturnedEquals nicht angegeben ist. Wenn KeyPrefixEquals und HttpErrorCodeReturnedEquals angegeben sind, müssen beide true sein, damit die Bedingung erfüllt ist.

HttpErrorCodeReturnedEquals

Der HTTP-Fehlercode, mit dem eine Übereinstimmung vorliegen muss, damit die Umleitung angewendet wird. Wenn ein Fehler auftritt und der Fehlercode mit diesem Wert übereinstimmt, gilt die angegebene Weiterleitung.

HttpErrorCodeReturnedEquals ist erforderliche, wenn KeyPrefixEquals nicht angegeben ist. Wenn KeyPrefixEquals und HttpErrorCodeReturnedEquals angegeben sind, müssen beide true sein, damit die Bedingung erfüllt ist.

Redirect

Container-Element, das Anweisungen für die Weiterleitung der Anfrage enthält. Sie können Anfragen an einen anderen Host oder eine andere Seite umleiten, oder ein anderes Protokoll vorgeben. Eine RoutingRule muss ein Redirect-Element besitzen. Ein Redirect-Element muss mindestens eines der folgenden zugeordneten Elemente enthalten: Protocol, HostName, ReplaceKeyPrefixWith, ReplaceKeyWith oder HttpRedirectCode.

Protocol

Das Protokoll, http oder https, das im Location-Header verwendet werden soll, der in der Antwort zurückgegeben wird.

Wenn eines der zugeordneten Elemente vorhanden ist, ist Protocol nicht erforderlich.

HostName

Der Hostname, der im Location-Header verwendet werden soll, der in der Antwort zurückgegeben wird.

Wenn eines der zugeordneten Elemente vorhanden ist, ist HostName nicht erforderlich.

ReplaceKeyPrefixWith

Das Präfix des Objektschlüsselnamens, der den Wert von KeyPrefixEquals in der Umleitungsanforderung ersetzt.

Wenn eines der zugeordneten Elemente vorhanden ist, ist ReplaceKeyPrefixWith nicht erforderlich. Es kann nur bereitgestellt werden, wenn ReplaceKeyWith nicht bereitgestellt wird.

ReplaceKeyWith

Der Objektschlüssel, der im Location-Header verwendet werden soll und in der Antwort zurückgegeben wird.

Wenn eines der zugeordneten Elemente vorhanden ist, ist ReplaceKeyWith nicht erforderlich. Es kann nur bereitgestellt werden, wenn ReplaceKeyPrefixWith nicht bereitgestellt wird.

HttpRedirectCode

Der HTTP-Umleitungscode, der im Location-Header verwendet werden soll, der in der Antwort zurückgegeben wird.

Wenn eines der zugeordneten Elemente vorhanden ist, ist HttpRedirectCode nicht erforderlich.

Beispiele für Umleitungsregeln

Die folgenden Beispiele erklären häufige Weiterleitungsfälle:

Wichtig

Um Umleitungsregeln in der neuen Amazon-S3-Konsole zu erstellen, müssen Sie JSON verwenden.

Beispiel 1: Weiterleitung nach der Umbenennung eines Schlüsselpräfix

Angenommen, Ihr Bucket enthält die folgenden Objekte:

  • index.html

  • docs/article1.html

  • docs/article2.html

Jetzt wollen Sie den Ordner von docs/ in documents/ umbenennen. Nach dieser Änderung müssen Sie Anfragen für das Präfix docs/ in documents/ weiterleiten. Beispielsweise muss die Anfragen für docs/article1.html an documents/article1.html weitergeleitet werden.

In diesem Fall fügen Sie der Konfiguration der Website die folgende Routingregel hinzu.

JSON
[ { "Condition": { "KeyPrefixEquals": "docs/" }, "Redirect": { "ReplaceKeyPrefixWith": "documents/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

Beispiel 2: Weiterleitung von Anfragen für einen gelöschten Ordner auf eine Seite

Angenommen, Sie löschen den Ordner images/ (d. h. Sie löschen alle Objekte mit dem Schlüsselpräfix images/). Sie können eine Weiterleitungsregel einrichten, die Anfrage für jedes Objekt mit dem Schlüsselpräfix images/ auf eine Seite namens folderdeleted.html weiterleitet.

JSON
[ { "Condition": { "KeyPrefixEquals": "images/" }, "Redirect": { "ReplaceKeyWith": "folderdeleted.html" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>

Beispiel 3: Weiterleitung für einen HTTP-Fehler.

Angenommen, Sie möchten Anforderungen an eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance umleiten, wenn ein angefordertes Objekt nicht gefunden wird. Fügen Sie eine Umleitungsregel hinzu, sodass bei einem HTTP-Statuscode 404 (Not Found) der Besucher der Site an eine Amazon EC2-Instance weitergeleitet wird, die die Anforderung verarbeitet.

Im folgenden Beispiel wird auch das Objektschlüsselpräfix report-404/ in die Weiterleitung eingefügt. Wenn Sie beispielsweise eine Seite mit der Bezeichnung ExamplePage.html anfordern und ein HTTP-404-Fehler ausgegeben wird, wird die Anforderung an eine Seite mit dem Namen report-404/ExamplePage.html auf der angegebenen Amazon EC2-Instance weitergeleitet. Wenn es keine Weiterleitungsregel gibt und der HTTP-Fehler 404 auftritt, wird das in der Konfiguration festgelegte Fehlerdokument zurückgegeben.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "404" }, "Redirect": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > </Condition> <Redirect> <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName> <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

So leiten Sie Anforderungen für ein Objekt um

Sie können Anforderungen für ein Objekt an ein anderes Objekt oder eine andere URL umleiten, indem Sie in den Metadaten des Objekts den Speicherort für die Websiteumleitung festlegen. Sie richten die Umleitung ein, indem Sie den Objekt-Metadaten die x-amz-website-redirect-location-Eigenschaft hinzufügen. In der Amazon-S3-Konsole legen Sie den Wert für Website Redirect Location (Websiteumleitungsort) in den Metadaten des Objekts fest. Wenn Sie die Amazon-S3-API verwenden, stellen Sie x-amz-website-redirect-location ein. Die Website interpretiert anschließend das Objekt als eine 301-Umleitung.

Um eine Anfrage an ein anderes Objekt umzuleiten, richten Sie den Umleitungsstandort auf den Schlüssel für das Zielobjekt ein. Um eine Anfrage an eine externe URL umzuleiten, richten Sie den Umleitungsstandort auf die gewünschte URL ein. Weitere Informationen zu Objekt-Metadaten erhalten Sie unter Systemdefinierte Objektmetadaten.

Wenn Sie eine Seitenumleitung einrichten, können Sie den Inhalt des Quellobjekts beibehalten oder löschen. Wenn es in Ihrem Bucket beispielsweise das Objekt page1.html gibt, können Sie alle Anforderungen für diese Seite an ein anderes Objekt umleiten, page2.html. Sie haben hierfür zwei Möglichkeiten:

  • Behalten Sie den Inhalt des Objekts page1.html und leiten Sie Seitenanforderungen um.

  • Löschen Sie den Inhalt von page1.html und laden Sie ein Null-Byte-Objekt mit dem Namen page1.html hoch, um das vorhandene Objekt zu ersetzen und Seitenanforderungen umzuleiten.

  1. Öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Liste Buckets den Namen des Buckets aus, den Sie als statische Website konfiguriert haben (z. B. example.com).

  3. Wählen Sie unter Objects (Objekte) Ihr Objekt aus.

  4. Wählen Sie Actions (Aktionen) und dann Edit metadata (Metadaten bearbeiten).

  5. Wählen Sie Metadata (Metadaten) aus.

  6. Wählen Sie Add Metadata (Metadaten hinzufügen) aus.

  7. Wählen Sie unter Type (Typ) die Option System Defined (Systemdefiniert) aus.

  8. Wählen Sie unter Key (Schlüssel) die Option x-amz-website-redirect-location aus.

  9. Geben Sie in Value (Wert) den Schlüsselnamen des Objekts ein, zu dem Sie umleiten möchten, z. B. /page2.html.

    Für ein anderes Objekt im selben Bucket ist das Präfix / im Wert erforderlich. Sie können den Wert auch auf eine externe URL festlegen, z. B, http://www.example.com.

  10. Wählen Sie Edit metadata (Metadaten bearbeiten).

Die folgenden Amazon-S3-API-Aktionen unterstützen den x-amz-website-redirect-location-Header in der Anforderung. Amazon S3 speichert den Header-Wert in den Objekt-Metadaten als x-amz-website-redirect-location.

Ein Bucket, der für das Website-Hosting konfiguriert ist, hat sowohl den Website-Endpunkt als auch den REST-Endpunkt. Eine Anfrage für eine Seite, die als 301-Umleitung konfiguriert ist, erzeugt die folgenden möglichen Ergebnisse, abhängig vom Endpunkt der Anfrage:

  • Regionsspezifischer Website-Endpunkt – Amazon S3 leitet die Seitenanforderung in Übereinstimmung mit dem Wert der x-amz-website-redirect-location-Eigenschaft um.

  • REST-Endpunkt – Amazon S3 leitet die Seitenanforderung nicht um Es gibt das angefragte Objekt zurück.

Weitere Informationen zu den Endpunkten finden Sie unter Wichtige Unterschiede zwischen einem Website-Endpunkt und einem REST-API-Endpunkt.

Wenn Sie eine Seitenumleitung einrichten, können Sie den Inhalt des Objekts beibehalten oder löschen. Nehmen wir z. B. an, dass Sie ein page1.html-Objekt in Ihrem Bucket haben.

  • Um den Inhalt von page1.html beizubehalten und nur Seitenanforderungen umzuleiten, können Sie eine PUT Object - Copy-Anforderung stellen, um ein neues page1.html-Objekt zu erstellen, das das vorhandene page1.html-Objekt als Quelle verwendet. In Ihrer Anfrage richten Sie den x-amz-website-redirect-location-Header ein. Nachdem die Anforderung abgeschlossen ist, ist die Originalseite mit ihrem Inhalt unverändert, aber Amazon S3 leitet alle Anforderungen für die Seite an den von Ihnen angegebenen Umleitungsstandort um.

  • Um den Inhalt des page1.html-Objekts zu löschen und Anforderungen für die Seite umzuleiten, können Sie eine PUT-Objektanforderung senden, um ein Nullbyte-Objekt hochzuladen, das den gleichen Objektschlüssel hat: page1.html. In der PUT-Anfrage setzen Sie x-amz-website-redirect-location für page1.html auf das neue Objekt. Nachdem die Anfrage abgeschlossen ist, hat page1.html keinen Inhalt mehr, und Anfragen werden an den Standort umgeleitet, der in x-amz-website-redirect-location angegeben ist.

Wenn Sie das Objekt mit der Aktion GET Object abrufen, gibt Amazon S3 zusammen mit anderen Objekt-Metadaten den x-amz-website-redirect-location-Header in der Antwort zurück.