2015-01-23 13 views
5

Sto cercando di ottenere un bucket S3 quando incontra un 404 piuttosto che lanciando una pagina 404 che reindirizza al mio server, quindi posso fare qualcosa con l'errore.Amazon S3 reindirizza 404 su un altro host

Questo è quello che ho messo insieme, quello che penso che dovrebbe fare è andare su mydomain.com e premere error.php e lasciare che lo script php attivi il nome file che l'utente stava cercando di accedere su S3.

Mi piacerebbe che ciò accada, non importa da quale directory proviene la richiesta. Quando ho un documento di errore definito nel sito web che ospita la pagina 404 si presenta e quando non ho una pagina 404 definita ottengo un errore xml di accesso negato.

Questo è il mio attuale regola di reindirizzamento

<RoutingRules> 
     <RoutingRule> 
      <Condition> 
       <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> 
      </Condition> 
      <Redirect> 
       <HostName>www.mydomain.com</HostName> 
       <ReplaceKeyPrefixWith>error.php#!/</ReplaceKeyPrefixWith> 
      </Redirect> 
     </RoutingRule> 
</RoutingRules> 

Qualcuno può darmi un suggerimento su ciò che mi manca per favore?

+0

Thickey Quale strada ho bisogno di scrivere al posto di ? puoi per favore elaborare questo? – kpp

risposta

9

modificare il codice di errore:

<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals> 

S3 non genera un 404 a meno che l'utente richiedente è autorizzato a elencare il secchio. Invece, genera un 403 ("Proibito"), perché non ti è permesso sapere se l'oggetto esiste o meno. In questo caso, è l'utente anonimo e probabilmente non si desidera consentire agli utenti anonimi di elencare l'intero contenuto del bucket.

Se l'oggetto richiesto non esiste, l'errore restituito da Amazon S3 dipende dal fatto che si disponga anche dell'autorizzazione s3:ListBucket.

Se si dispone dell'autorizzazione s3:ListBucket nel bucket, Amazon S3 restituirà un errore di codice di stato HTTP 404 ("nessuna chiave").

se non si dispone dell'autorizzazione s3:ListBucket, Amazon S3 restituirà un errore di codice di stato HTTP 403 ("accesso negato").

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html

Vedi anche: - "! Error.php #" Amazon S3 Redirect rule - GET data is missing

+0

Aggghhh ... dice 403 vietato e tutto .. ha avuto perfettamente senso non appena lo hai menzionato .. Sono un idiota .. Ho cambiato 404 per 403 e il redirect ha funzionato! Grazie mille! – Thickey

+0

È possibile modificare questo comportamento S3 e restituire un oggetto predefinito quando l'oggetto richiesto non viene trovato senza alcun tipo di errore? –