カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

Amazon S3でホストしてるドメインの旧URLのリダイレクトをまじめに行うようにした

概要: Amazon S3に引っ越した空繰再繰と無貌断片の旧URLをきちんとリダイレクトするようにした


以前、Qiitaの方で、

という記事で、

  • Digital Oceanを使うのをやめて自宅鯖に変更した
  • その際にAmazon S3でペラサイトのホスティングを移した

というような感じのコトをしましたよ〜とは書いていたんですが、その際に実は、

  • 空繰再繰(カラクリサイクル)
  • 無貌断片

のリダイレクトも設定していたんですね。

しかしながら、実際に細かいURLのリダイレクトはなんかうまく行かないとかでやってなくて、ドメインだけのリダイレクトに成ってたんですが、今回、その辺りを修正して、前のURLもきちんとリダイレクトするようにしてみました。

なので、今日はその当たりのコトを書きたいと思います。

S3でWebサイトを丸ごと引っ越す方法

えっと、僕は最初、旧URLの引っ越しに、Amazn S3のXMLの方のリダイレクト機能を使おうとしていました。

が、どうもアレは大量のURLのリダイレクトに対応していないっぽく、そのS3にペラサイト等を移した時には、実はPermalinkとかの引っ越しは出来てなかったんですね。

で、今回、どうもS3で大量のURLを引っ越す際には、

  1. 引っ越したいURLのパスに対応する空のファイルをBucket内に作成する
  2. その空のファイルにリダイレクトの設定をする

という方法を取ると、どうもうまくいくっぽい、というコトが分かったので、今回は、

  1. 旧新のURLの対応表を用意する
  2. そのURL表に従って、s3cmd を叩きまくる
  3. 以上

という方法を使って、一応URLのリダイレクトを成し遂げました。

で、 s3cmd は最新の開発版を使っていて、インストールには、Homebrewを使って、

$ brew install s3cmd --devel

という感じでインストールを行いました。

それで、 s3cmd の叩き方としては、大体こんな感じ:

$ s3cmd put ./empty s3://<旧ドメイン用Bucket>/<旧パス> --add-header="x-amz-website-redirect-location:<新URL>"

ポイントとしては、

  1. PUTするファイルには空のファイルを指定する
  2. --add-header 引数で、 x-amz-website-redirect-locationをつける
  3. s3cmd を叩く際には、スクリプト等で自動化する

という感じです。

で、実際に使ったスクリプトに関しては、僕のサイトやらファイルやらに特化してる書き捨てスクリプトなので、さすがに公開するのアレなんでやめておきますが、とりあえず僕は上記のような感じで旧URLのリダイレクトを行いました。

やってみた感想

という感じで旧URLのリンク切れを直したんですが、多分これ、むかしブクマされたURLにアクセスする時にしか役に立たない気がするです。

というのも旧URLがリンク切れになってたのは、12月のQiitaの記事を書いた時からなので、多分Googleにはもうインデックスされてないんじゃね? と思うからです。

まあでもブクマとかには旧URLが残ってるので、そっちには役に立つのかな?

で、あとずーっと昔の、まだ nyarla.net/blog 時代だった空繰再繰の旧URLも、今のTumblrのURLにリダイレクトするようにしてみました。

っていうか、この記事を書いてる途中に作業をしてたんですが、昔のデータを掘り起こすのに時間がかかりました。もう5〜6年も前のブツでしたし。blog.nyarla.net へ移ったときのデータとか残ってなかったし。 でも、とりえず出来たので満足です。

ということで以上

とりあえず今回の記事はQiitaに書こうか、とも思ったんですが、いかんせん僕のWebサイト事情に特化していたため、今回はQiitaに書くのを見送って、このブログの記事にしてみた次第です。

まあS3のリダイレクト機能は、把握してしまえば結構楽に引っ越し等ができるので、独自ドメインで運営してたサイトを引っ越したいんだけど……というときには、意外と使えるかと思います。

というワケで本日の記事は以上です。終わります。