2017-02-22 46 views
0

У меня есть статический сайт, размещенный на S3, и я хотел бы установить 301 редирект с www.example.com/2000/200/2/ на www.example.com.Переадресация Amazon S3 не работает

Я попытался создать структуру каталогов:

/2000/200/2/index.html 

и с помощью консоли S3, чтобы установить переадресацию в свойствах метаданных, но это не сработало.

Далее я попробовал правило ведро, которое было похоже:

<RoutingRules><RoutingRule> 
<Condition><KeyPrefixEquals>http://www.example.com/2000/200/2/</KeyPrefixEquals></Condition> 
<Redirect> 
<HostName>www.example.com</HostName> 
<Protocol>http</Protocol> 
<ReplaceKeyPrefixWith></ReplaceKeyPrefixWith> 
</Redirect> 
</RoutingRule></RoutingRules> 

Но теперь, когда я иду в /2000/200/2/index.html я просто увидеть на этой странице. Так что ни переадресация не работала! Есть идеи?

ответ

0

Так две вещи:

Первые, это правило, которое я использовал.

<RoutingRules> 
<RoutingRule> 
    <Condition> 
     <KeyPrefixEquals>xx/x/xxxx/xxxxxx</KeyPrefixEquals> 
     <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> 
    </Condition> 
    <Redirect> 
     <HostName>www.example.com</HostName> 
     <ReplaceKeyWith></ReplaceKeyWith> 
    </Redirect> 
</RoutingRule> 
</RoutingRules> 

Немного отличается от форматирования образца Amazon, но он работает.

Second Я заметил, что Firefox удаляет этот сегмент XML: "" после сохранения фрагмента. Перешел на Chrome и никаких проблем.

Последнее, что, мне пришлось подключить сайт к конечной точке сайта S3 вместо конечной точки API, в том числе в CloudFront.

Long story short, AWS Static Site Tool работает хорошо, но если вы используете его как отправную точку, а затем сложность ваших требований увеличится, это сделает неправильный выбор для вас!

+0

Btw Я работал над некоторыми из этих проблем в блоге: http://cloudconfusing.com/2017/12/24/amazon-s3-website-vs-rest-api-endpoint/ –

1

The Configure a Bucket for Website Hosting показывает примеры перенаправления, такие как:

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
     <KeyPrefixEquals>docs/</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
     <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> 
    </Redirect> 
    </RoutingRule> 
    </RoutingRules> 

и

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
     <KeyPrefixEquals>images/</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
     <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> 
    </Redirect> 
    </RoutingRule> 
    </RoutingRules> 

Они имеют <KeyPrefixEquals> равен пути относительно корня, а не в том числе http://www.example.com. Попробуйте сопоставить этот формат.

+0

Не работает, к сожалению. Я получаю: AccessDenied Access Denied ... –

+0

Так что, если кто-то обращается к 'www.example.com/2000/200/2/foo.html' они будут перенаправлены на' www.example.com/ foo.html'. Этот целевой файл должен быть доступен с точки зрения разрешений. Но трудно сказать, является ли это проблемой разрешений или проблемой «файл не найден». –

+0

Кажется, проблема с разрешениями, но какие разрешения будут такими? Благодаря! –