脱職エントリー

いつか退職エントリーを書いて一人前のエンジニアを名乗りたい

S3の静的webサイトで404時に別のドメインに飛ばす時

f:id:darakunomiti:20170809202339j:plain

問題は解決してませんが、ごまかし方だけメモ

やりたいこと

subdomain.domain.com で404エラーがでたら
domain.com/404 に遷移する
サブドメインドットコムはS3単独の静的webサイトで、クラウドフロント通したりはせずに、Route53でサブドメインを振っています。

やってみたことの一部

S3のリダイレクトルールをこんな感じで書いてみました。

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <Protocol>https</Protocol>
      <HostName>domain.com</HostName>
      <ReplaceKeyPrefixWith>404</ReplaceKeyPrefixWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

が・・・

sudomain.domain.com/uwaaaaa/
こういうありえないアドレスにアクセスすると

domain.com/404/uwaaaaa/
うーーん。。。何故か遷移元のURLを引き継いでしまいます。。。

とりえずのごまかし方

引き継がないようにあれこれやってみましたが、結果的にはごまかす方向で逃げました。

<ReplaceKeyPrefixWith>404</ReplaceKeyPrefixWith>

<ReplaceKeyPrefixWith>404?referer=</ReplaceKeyPrefixWith> 

どうしても引きはがせないURLの部分を何の意味もないクエリストリングにすることで404の画面をそれっぽく見せることにしました。

ごまかしに過ぎませんが、これは一体。。うーーん。。。