(Facoltativo) Configurazione del reindirizzamento di una pagina Web - Amazon Simple Storage Service

(Facoltativo) Configurazione del reindirizzamento di una pagina Web

Se il bucket Amazon S3 è configurato per l'hosting di siti Web statici, è possibile configurare i reindirizzamenti per il bucket o gli oggetti in esso contenuti. Per configurare il reindirizzamento sono disponibili le opzioni riportate di seguito.

Reindirizzamento delle richieste per l'endpoint del sito Web del bucket a un altro bucket o dominio

È possibile reindirizzare tutte le richieste a un endpoint di sito Web per un bucket a un altro bucket o a un dominio. Se vengono reindirizzate tutte le richieste, qualsiasi richiesta effettuata all'endpoint del sito Web viene reindirizzata al bucket o al dominio specificato.

Ad esempio, se il dominio root è example.com e desideri servire richieste sia per http://example.com che per http://www.example.com, puoi creare due bucket denominati example.com e www.example.com. Successivamente, mantenere il contenuto nel bucket example.com e configurare l'altro bucket www.example.com per reindirizzare tutte le richieste al bucket example.com. Per ulteriori informazioni, consulta Configurazione di un sito Web statico utilizzando un nome di dominio personalizzato.

Per reindirizzare le richieste per un endpoint di un sito Web bucket
  1. Apri la console Amazon S3 su https://console.aws.amazon.com/s3/.

  2. In Bucket seleziona il nome del bucket da cui desideri reindirizzare le richieste (ad esempio, www.example.com).

  3. Scegliere Properties (Proprietà).

  4. In Hosting di siti Web statici, seleziona Modifica.

  5. Seleziona Reindirizza richieste per un oggetto.

  6. Nella casella Nome host specifica l'endpoint del sito Web per il bucket o il dominio personalizzato.

    Ad esempio, se il reindirizzamento è effettuato verso un indirizzo di dominio root, digita example.com.

  7. Per Protocollo, seleziona il protocollo per le richieste reindirizzate (nessuno,http o https).

    Se non si specifica un protocollo, l'opzione predefinita è nessuno.

  8. Seleziona Salva modifiche.

Configurazione delle regole di reindirizzamento per utilizzare i reindirizzamenti condizionali avanzati

Con le regole di reindirizzamento avanzato, è possibile instradare le richieste in modo condizionale in base ai nomi delle chiavi degli oggetti specifici, ai prefissi nella richiesta o ai codici di risposta. Si supponga ad esempio di eliminare o rinominare un oggetto nel bucket. È possibile aggiungere una regola di routing che reindirizza la richiesta a un altro oggetto. Se si desidera rendere una cartella non disponibile, è possibile aggiungere una regola di routing per reindirizzare la richiesta a un'altra pagina Web. Inoltre, è possibile aggiungere una regola di routing per gestire le condizioni di errore instradando le richieste che restituiscono l'errore a un altro dominio dove viene elaborato l'errore.

Quando abiliti l'hosting di siti Web statici per il tuo bucket, puoi specificare facoltativamente regole di reindirizzamento avanzate. Amazon S3 ha un limite di 50 regole di routing per configurazione di sito web. Se sono necessarie più di 50 regole di routing, è possibile utilizzare l'instradamento degli oggetti. Per ulteriori informazioni, consulta Utilizzo della console S3.

Per ulteriori informazioni sulla configurazione delle regole di routing tramite REST API, consulta PutBucketWebsite nel Riferimento API di Amazon Simple Storage Service.

Importante

Per creare regole di reindirizzamento nella nuova console Amazon S3, è necessario utilizzare JSON. Per gli esempi JSON, consulta Esempi regole di reindirizzamento.

Per configurare le regole di reindirizzamento per un sito Web statico

Per aggiungere le regole di reindirizzamento per un bucket che ha già abilitato l'hosting di siti Web statici, attieniti alla seguente procedura.

  1. Apri la console Amazon S3 su https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, seleziona il nome di un bucket configurato come sito Web statico.

  3. Scegliere Properties (Proprietà).

  4. In Hosting di siti Web statici, seleziona Modifica.

  5. Nella casella Redirection rules (Regole di reindirizzamento), immettere le regole di reindirizzamento in JSON.

    Nella console S3 descrivi le regole utilizzando JSON. Per gli esempi JSON, consulta Esempi regole di reindirizzamento. Amazon S3 ha un limite di 50 regole di routing per configurazione di sito web.

  6. Seleziona Salva modifiche.

Elementi regola instradamento

Di seguito è riportata la sintassi generale per definire le regole di routing in una configurazione di un sito Web in XML. Per configurare le regole di reindirizzamento nella nuova console S3, è necessario utilizzare JSON. Per gli esempi JSON, consulta Esempi regole di reindirizzamento.

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.

Nella seguente tabella sono descritti gli elementi della regola di routing.

Nome Descrizione
RoutingRules Container per una raccolta di elementi RoutingRule.
RoutingRule

Una regola che stabilisce una condizione e il reindirizzamento che viene applicato quando la condizione è soddisfatta.

Condizione:

  • Un container RoutingRules deve contenere almeno una regola di routing.

Condition

Container per descrivere una condizione che deve essere soddisfatta per l'applicazione del reindirizzamento specificato. Se la regola di routing non include una condizione, la regola viene applicata a tutte le richieste.

KeyPrefixEquals

Il prefisso del nome della chiave dell'oggetto da cui vengono reindirizzate le richieste.

KeyPrefixEquals è obbligatorio se HttpErrorCodeReturnedEquals non è specificato. Se KeyPrefixEquals e HttpErrorCodeReturnedEquals sono specificati, devono essere entrambi veri perché la condizione sia soddisfatta.

HttpErrorCodeReturnedEquals

Il codice di errore HTTP che deve corrispondere perché il reindirizzamento venga applicato. Se si verifica un errore e se il codice di errore corrisponde a questo valore, il reindirizzamento specificato viene applicato.

HttpErrorCodeReturnedEquals è obbligatorio se KeyPrefixEquals non è specificato. Se KeyPrefixEquals e HttpErrorCodeReturnedEquals sono specificati, devono essere entrambi veri perché la condizione sia soddisfatta.

Redirect

Elemento del container che fornisce istruzioni per il reindirizzamento della richiesta. È possibile reindirizzare le richieste a un altro host o a un'altra pagina oppure specificare un altro protocollo da utilizzare. Un RoutingRule deve avere un elemento Redirect. Un elemento Redirect deve contenere almeno uno dei seguenti elementi di pari livello: Protocol, HostName, ReplaceKeyPrefixWith, ReplaceKeyWith o HttpRedirectCode.

Protocol

Il protocollo, http o https, da utilizzare nell'intestazione Location che viene restituita nella risposta.

Se viene fornito uno degli elementi di pari livello, Protocol non è necessario.

HostName

Il nome dell'host da utilizzare nell'intestazione Location che viene restituita nella risposta.

Se viene fornito uno degli elementi di pari livello, HostName non è necessario.

ReplaceKeyPrefixWith

Il prefisso del nome della chiave dell'oggetto che sostituisce il valore di KeyPrefixEquals nella richiesta di reindirizzamento.

Se viene fornito uno degli elementi di pari livello, ReplaceKeyPrefixWith non è necessario. Può essere fornito solo se ReplaceKeyWith non è fornito.

ReplaceKeyWith

La chiave dell'oggetto da utilizzare nell'intestazione Location che viene restituita nella risposta.

Se viene fornito uno degli elementi di pari livello, ReplaceKeyWith non è necessario. Può essere fornito solo se ReplaceKeyPrefixWith non è fornito.

HttpRedirectCode

Il codice di reindirizzamento HTTP da utilizzare nell'intestazione Location che viene restituita nella risposta.

Se viene fornito uno degli elementi di pari livello, HttpRedirectCode non è necessario.

Esempi regole di reindirizzamento

Gli esempi seguenti illustrano le comuni attività di reindirizzamento:

Importante

Per creare regole di reindirizzamento nella nuova console Amazon S3, è necessario utilizzare JSON.

Esempio 1: reindirizzamento dopo la ridenominazione del prefisso di una chiave

Si supponga che il bucket contenga i seguenti oggetti:

  • index.html

  • docs/article1.html

  • docs/article2.html

Si decide di rinominare la cartella da docs/ a documents/. Dopo aver apportato questa modifica, occorre reindirizzare le richieste del prefisso docs/ verso documents/. Ad esempio, la richiesta di docs/article1.html sarà reindirizzata a documents/article1.html.

In questo caso, si aggiunge la seguente regola di routing alla configurazione del sito Web.

JSON
[ { "Condition": { "KeyPrefixEquals": "docs/" }, "Redirect": { "ReplaceKeyPrefixWith": "documents/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>
Esempio 2: reindirizzamento delle richieste di una cartella eliminata verso una pagina

Si supponga l'eliminazione della cartella images/ (ovvero, l'eliminazione di tutti gli oggetti con prefisso della chiave images/). È possibile aggiungere una regola di routing che reindirizza le richieste di qualsiasi oggetto con prefisso della chiave images/ verso una pagina denominata folderdeleted.html.

JSON
[ { "Condition": { "KeyPrefixEquals": "images/" }, "Redirect": { "ReplaceKeyWith": "folderdeleted.html" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>
Esempio 3: reindirizzamento per un errore HTTP

Si supponga che quando non viene trovato un oggetto richiesto, si desidera reindirizzare le richieste a un'istanza Amazon Elastic Compute Cloud (Amazon EC2). Aggiungere una regola di reindirizzamento in modo tale che, quando viene restituito un codice di stato HTTP 404 (Non trovato), il visitatore del sito venga reindirizzato a un'istanza Amazon EC2 che gestisca la richiesta.

Il seguente esempio riporta nel reindirizzamento anche il prefisso della chiave dell'oggetto report-404/. Ad esempio, se la richiesta di una pagina ExamplePage.html restituisce un errore HTTP 404, la richiesta viene reindirizzata a una pagina report-404/ExamplePage.html sull'istanza Amazon EC2 specificata. Se non sono presenti regole di routing e si verifica l'errore HTTP 404, viene restituito il documento di errore specificato nella configurazione.

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>

Reindirizzamento delle richieste per un oggetto

Puoi reindirizzare le richieste di un oggetto a un altro oggetto o URL impostando la posizione di reindirizzamento del sito Web nei metadati dell'oggetto. Si imposta il reindirizzamento aggiungendo la proprietà x-amz-website-redirect-location ai metadata dell'oggetto. Nella console Nella console Amazon S3, la Posizione di reindirizzamento del sito Web si imposta nei metadati dell'oggetto. Se utilizzi l'API Amazon S3, hai impostato x-amz-website-redirect-location. Il sito Web interpreta quindi l'oggetto come reindirizzamento 301.

Per reindirizzare una richiesta a un altro oggetto, si imposta la posizione di reindirizzamento sulla chiave dell'oggetto di destinazione. Per reindirizzare una richiesta a un URL esterno, si imposta la posizione di reindirizzamento sull'URL desiderato. Per ulteriori informazioni sui metadati degli oggetti, consulta Metadata di oggetti definiti dal sistema.

Quando si imposta il reindirizzamento di una pagina, è possibile mantenere o eliminare il contenuto dell'oggetto di origine. Ad esempio, se nel bucket è presente un oggetto page1.html, è possibile reindirizzare qualsiasi richiesta per questa pagina a un altro oggetto page2.html. Sono disponibili due opzioni:

  • Mantenere il contenuto dell'oggetto page1.html e reindirizzare le richieste per la pagina.

  • Eliminare il contenuto di page1.html e caricare un oggetto a zero byte denominato page1.html per sostituire l'oggetto esistente e reindirizzare le richieste per la pagina.

  1. Apri la console Amazon S3 su https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, seleziona il nome di un bucket configurato come sito Web statico (ad esempio, example.com).

  3. In Oggetti, seleziona l'oggetto.

  4. Seleziona Operazioni, quindi Modifica metadati.

  5. Seleziona Metadati.

  6. Seleziona Aggiungi metadati.

  7. In Tipo, seleziona Definito dal sistema.

  8. In Chiave, scegli x-amz-website-redirect-location.

  9. In Valore, immettere il nome della chiave dell'oggetto a cui si desidera reindirizzare, ad esempio /page2.html.

    Per un altro oggetto nello stesso bucket, il prefisso / nel valore è obbligatorio. È possibile inoltre impostare il valore su un URL esterno, ad esempi, http://www.example.com.

  10. Seleziona Modifica metadati.

Le seguenti operazioni API Amazon S3 supportano l'intestazione x-amz-website-redirect-location nella richiesta. Amazon S3 archivia il valore dell'intestazione nei metadati dell'oggetto come x-amz-website-redirect-location.

Un bucket configurato per l'hosting di siti Web presenta sia l'endpoint del sito Web che l'endpoint REST. La richiesta di una pagina configurata come reindirizzamento 301 può generare i seguenti risultati, a seconda dell'endpoint della richiesta:

  • Endpoint del sito web specifico per regione: Amazon S3 reindirizza la richiesta della pagina in base al valore della proprietà x-amz-website-redirect-location.

  • Endpoint REST: Amazon S3 non reindirizza la richiesta della pagina. Restituisce l'oggetto richiesto.

Per ulteriori informazioni sugli endpoint, consulta Differenze chiave tra un endpoint del sito Web e un endpoint REST API.

Quando si imposta il reindirizzamento di una pagina, è possibile mantenere o eliminare il contenuto dell'oggetto. Supponi, ad esempio, di avere un oggetto page1.html nel bucket.

  • Per mantenere il contenuto di page1.html e reindirizzare solo le richieste della pagina, è possibile inviare una richiesta PUT Object - Copy per creare un nuovo oggetto page1.html che utilizzi l'oggetto page1.html esistente come origine. Nella richiesta, si imposta l'intestazione x-amz-website-redirect-location. Al completamento della richiesta, si ottiene la pagina originale con contenuto invariato, ma Amazon S3 reindirizza qualsiasi richiesta della pagina alla posizione di reindirizzamento specificata.

  • Per eliminare il contenuto dell'oggetto page1.html e reindirizzare le richieste della pagina, è possibile inviare una richiesta PUT Object per caricare un oggetto da zero byte con la stessa chiave dell'oggetto: page1.html. Nella richiesta PUT, si imposta x-amz-website-redirect-location per page1.html sul nuovo oggetto. Al completamento della richiesta, page1.html non ha contenuto e le richieste vengono reindirizzate alla posizione specificata da x-amz-website-redirect-location.

Quando si recupera l'oggetto tramite l'operazione GET Object, insieme ad altri metadati dell'oggetto, Amazon S3 restituisce nella risposta l'intestazione x-amz-website-redirect-location.