2013-11-27 2 views
2

S3 버킷을 사용하여 정적 사이트 mydomain.com을 호스팅합니다. 원래 블로그 콘텐츠 레이아웃은 S3 기본 도메인을 키 접두사 폴더로 리디렉션

지금 나는 blog 디렉토리 내부의 모든 블로그 콘텐츠를 유지

  • index.html을
  • 게시물/article.html이었다. 내가 mydomain.com 양동이에 호스팅 웹 사이트를 활성화

  • 블로그/index.html을
  • 블로그/게시물/article.html. S3's custom redirection rules을 사용하여 'blog'접두어가없는 이전 URL을 리디렉션하고 싶습니다. 예를 들어 mydomain.com/index.htmlmydomain.com/blog/index.html으로 리디렉션되어야합니다.

    나는

    <RoutingRules> 
        <RoutingRule> 
         <Condition> 
          <KeyPrefixEquals>/</KeyPrefixEquals> 
         </Condition> 
         <Redirect> 
          <ReplaceKeyPrefixWith>blog/</ReplaceKeyPrefixWith> 
         </Redirect> 
        </RoutingRule> 
    </RoutingRules> 
    

    <RoutingRules> 
        <RoutingRule> 
         <Condition> 
          <KeyPrefixEquals>mydomain.com/</KeyPrefixEquals> 
         </Condition> 
         <Redirect> 
          <ReplaceKeyPrefixWith>mydomain.com/blog</ReplaceKeyPrefixWith> 
         </Redirect> 
        </RoutingRule> 
    </RoutingRules> 
    

    을 시도했지만 리디렉션 루프 (놀라운 일이 아니다)와 두 번째의 첫 번째 결과는 작동하지 않습니다.

    <RoutingRules> 
        <RoutingRule> 
        <Redirect> 
         <Protocol>https</Protocol> 
         <HostName>mydomain.com</HostName> 
         <ReplaceKeyPrefixWith>blog/</ReplaceKeyPrefixWith> 
         <HttpRedirectCode>301</HttpRedirectCode> 
        </Redirect> 
        </RoutingRule> 
    </RoutingRules> 
    

    참고 :

답변

2

당신은 리디렉션 규칙을 사용하고 ReplaceKeyPrefixWith 항목에 추가해야합니다 그래서 당신은 당신의 리디렉션 규칙을 확인하기 위해 다른 브라우저 세션을 사용하거나 있도록 일부 브라우저 캐시가 매우 끈적하거나 브라우저를 닫았다가 다시 열어 확인하십시오.

+0

이 인해 너무 많은 리디렉션에 "리디렉션 루프를"발생을 방지하기 위해 "KeyPrefixNotEquals"와 같은 부정적인 조건을 지정하는 방법을 찾지 못했습니다. 첫 번째 리디렉션은 mydomain.com/blog이며, URL이 커질 때까지 mydomain.com/blog/blog 등으로 리디렉션됩니다. – dghubble

2

다음 해킹이 작동하는지 확인 - "HttpErrorCodeReturnedEquals = 404"를 조건에 추가하십시오. 페이지가 없습니다 (404)는 일치와 함께

  • 귀하의 접두사 조건을 존재하지 않는 내가

    1. 액세스를 발생하는 이벤트의 순서를 다음과 같은 기대하고있다 "www.example.com/index.html"
    2. (404)를 가져옵니다 리디렉션 규칙
    3. "/ blog"를 접두어로 추가해야합니다.
    4. "www.example.com/blog/index.html"페이지가 표시됩니다.

    독서 문서 나는 재귀

  • +2

    example.com/index.html에서 example.com/blog/index.html로 리디렉션 할 수 있습니다. 하나의 불행한 단점은 404 페이지에 도달 할 때마다 조건을 충족 할 수 있으므로 모든 404 페이지가 리디렉션 루프가있는 URL로 리디렉션된다는 것입니다. 네가 옳다. S3 조건은 부정적인 조건없이 라우팅 논리가 실제로 매우 제한되어있다.이 문제를 적절히 해결하기 위해서는 0 번 키 확인을 허용하는 논리 연산자가 필요하다. 해당 이슈를 제기 할 수 있습니다. 현재로서는 작은 파일을 사용하여 몇 개의 블로그 게시물을 새 URL로 리디렉션합니다. 현재이 URL은 작동합니다. – dghubble

    +0

    동의 함. 가능하다면 모든 가능한 접두사를 열거하고 접두사 일치 당 하나의 리디렉션 규칙을 가져야 할 수도 있습니다. –

    관련 문제