2015-10-29 3 views
0

Я хотел бы создать чистый редирект в AWS S3, я уверен, что s3client работает без проблем.S3 PutBucketWebsite AWS PHP SDK

$subdomain = 'test.example.com'; 
$redirectURL = 'https://www.somedomain.com/redirect?someparam'; 
$bucketID = $s3->createBucket(['Bucket' => $bucket ]); 
$arg = array(
       'Bucket' => $bucket, // REQUIRED 
       'WebsiteConfiguration' => array(// REQUIRED 
        'ErrorDocument' => array('Key' => 'err.html',), 
        'IndexDocument' => array('Suffix' => 'index.html',), 
        'RedirectAllRequestsTo' => array('HostName' => $redirectURL,), 
        'RoutingRules' => array(
             array(          
              'Redirect' => array(
               'HostName' => $redirectURL, 
               'HttpRedirectCode' => '301', 
              ), 
             ), 
            ), 
       ), 
      ); 
$result = $s3->putBucketWebsite($arg); 

Однако, он выдает следующую ошибку, даже я попытался изменить некоторые другие настройки.

> Request ID E00C517E4F812581 
Error Type client 
Error Code MalformedXML 

Интересно, есть ли какие-либо скрытые настройки, которые мне нужно добавить.

ответ

0

RedirectAllRequestsTo является взаимоисключающим с ErrorDocument, IndexDocument и RoutingRules. Если вы перенаправляете все в другом месте, не будет оценки ошибок или индексных документов, равно как и правила маршрутизации.

RedirectAllRequestsTo

Описывает поведение переадресации для каждого запроса на веб-сайт этого ведра конечной точки. Если этот элемент присутствует, никакие другие братья и сестры не допускаются.

Тип: Контейнер

Предки: WebsiteConfiguration

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

+0

$ Arg = массив ( 'Заливка' => $ bucket, // REQUIRED 'WebsiteConfiguration' => array ( 'RedirectAllRequestsTo' => массив ('HostName' => $ redirectURL,), ), ); $ result = $ s3-> putBucketWebsite ($ arg); – NetDreamLand

+0

однако я изменил вышеуказанные вещи, это все еще MalformedXML – NetDreamLand

0

наконец я получил решение, это, она работает

$subdomain = 'test.example.com'; 
$protocol = 'https'; 
$redirectURL = 'www.somedomain.com/redirect?someparam'; 
$bucketID = $s3->createBucket(['Bucket' => $bucket ]); 
$arg = array(
    'Bucket' => $bucket, 
    'WebsiteConfiguration' => array( 
     'RedirectAllRequestsTo' => array('HostName' => $redirectURL, 'Protocol'=>$protocol),    
    ), 
); 
$result = $s3->putBucketWebsite($arg); 
Смежные вопросы