超高速WordPress実行環境「KUSANAGI」において、リダイレクト専用のサイトを作る方法です。
例えば、私が運営しているサイト「インフラ寺子屋」は、インフラの移行に伴って、以下のようにURLを変更しています。

infraterakoya


http://infraterakoya.net/
https://infraterakoya.net/
→ https://blog.infraterakoya.net/←いまここ

この場合の 負の遺産 過去のURLから現在のURLへのリダイレクトを、KUSANAGIを用いて簡単に設定する方法です。

■概要

KUSANAGIでは、プロファイル作成時にWordPressをインストールしない「LAMPプロファイル」があり、これを使用してブランクのSSLサイトを作成する事となります。
併せて、常時SSL化の設定を流用し、現在のURLへリダイレクトを行います。

■LAMPプロファイルのプロビジョン

kusanagiコマンドを用いて、プロファイル「redi_infrat」をプロビジョンします。
この際、DocumentRootおよびDB(MariaDB)は強制的に作成されるので、一意のプロファイル名を決めた方が良いでしょう。

Let's Encryptを設定する際に必要になるので、事前に転送元ドメインのDNSを変更しておきましょう。

コマンドは以下の通りです。
kusanagi provison --lamp <プロファイル名>
以降は通常のWordPressプロファイルのプロビジョンと、ほぼ同じです。
今回の要件では、旧ドメインでのSSL有り無し両方ともリダイレクトする為、Let'sEncryptを有効にしておきましょう。

WordPressプロファイルとの違いは以下の通りです。
  • WordPressがインストールされない
  • KUSANAGIプラグイン(mu-plugin)がインストールされない
  • bcacheの設定が消える

■nginxの設定を変更する

ウェブサーバにnginxを使用する場合、リダイレクト処理はnginxの設定にて行われます。
この際、設定を変更するコンフィグは以下の通りです。
  • /etc/nginx/conf.d/redi_infrat_http.conf
  • /etc/nginx/conf.d/redi_infrat_ssl.conf
どちらのファイルにも、同じ変更を施します。

redi_infrat_http.confに、常時SSL化の為の以下の設定があるため、これをベースにカスタマイズします。
# rewrite ^(.*)$ https://infraterakoya.net$request    _uri permanent; # SSL ONLY
これをベースに、以下の通り書き換えます。
rewrite ^(.*)$ https://blog.infraterakoya.net$request_uri permanent; # Redirect ONLY
この際、クライアントには恒久的な移動(301リダイレクト)として通知する為、「permanent」と設定しています。
クライアントに一時的な移動(302リダイレクト)として通知する場合、「redirect」と設定します。

2つのコンフィグに同様の設定を投入した後、nginxを再起動します。
# kusanagi nginx
エラーが出なければ、無事に古いURLからリダイレクトされている事と思われます。