RedirectionでURLリストをインポートして301転送する



このブログではあるゲームのカテゴリのアクセスが肥大化して、サイトの9割を占めることになりました。ちょっと邪魔なのでwpのマルチサイト機能でサブディレクトリ下に独立させました。
そのゲームのカテゴリに属する記事を全てマルチサイトのサブサイトに移しますので、必然的にパーマリンクが変更となります。

miyadir.com/001

miyadir.com/thegame/001

wpでは同じサイト内でパーマリンク構造を変更した場合は(確か)自動的にリダイレクトをかけてくれますが、マルチサイト機能は「完全な別サイトをサブドメイン・サブディレクトリに作成する」というものですのでリダイレクト(転送)はこちらで設定しないといけません。
.htaccessで設定しても良いのですが、今回はプラグインを使用してリダイレクトさせました。

プラグインの準備

今回使用するのはRedirectionというプラグインです。プラグインの新規追加で探せば出てくると思います。
元々ブログ移転時にインストールしていましたので、インストール系に関しては割愛させていただきます。
設定だけ載せておきます。(クリックで拡大)

ログが貯まり続けるとDB的によろしくないので、ある程度の期間で破棄するよう設定するのだけ忘れないでください。

リダイレクトするデータの準備

リダイレクト時に必要なのは以下のような形のCSVです。


ソース URL,ターゲット URL
ソース URL,ターゲット URL
ソース URL,ターゲット URL


miyadir.com/068,miyadir.com/thegame/068
miyadir.com/203,miyadir.com/thegame/203
miyadir.com/492,miyadir.com/thegame/492

ソースURLの一覧、つまりリダイレクト元はwpのデフォルト機能ではとれないので、以下の3つの方法のいずれかで入手します。

  • 記事データを出力するプラグインを入れる
  • wpデフォルトのエクスポート機能でxmlをDLし、何かしらの手段でcsvに変換する
  • phpMyAdmin等でDBから直接ダンプする

僕は2番目の方法を使用し、wpデフォルトのエクスポート機能でxmlをエクスポートし、ネットで探したxml→csvのコンバータでcsvに変換しました。
エクセルとかなら読み込む時に変換して読み込みできるはずです。
プラグインが増えても問題ない方はcsvで記事を出力できるプラグインを新規インストールするなどして対処しましょう。
mysqlから直接ダンプできる方に説明は不要だと思いますので、3番目も割愛します。

データを整形する

ソース URL,ターゲット URL

既存の記事一覧を準備できたら、データを上記の形に整形しましょう。エクセルでもスプレッドシートでも何でも良いので、csvで吐き出せるようにしてください。
スプレッドシートを使用している場合は以下の記事を参考にしてください。
スプレッドシートで正規表現を使って抽出・置換する

Redirectionでインポートする

ではインポートしていきましょう。
まずわかりやすいように、今回作業するURL群のグループを作成します。
プラグイン設定ページから「グループ」を選択し、下の「グループを追加」からご自身がわかりやすいグループ名をつけてください。プルダウンはwordpressでOKです。

プラグインページの「インポート / エクスポート」に移り、インポートしていきます。
URLの一覧を.csvをドラッグし、グループは先程作成したものにしてアップロードを開始します。

この画面が出ればOKです。

あとは転送ルールから今回インポートしたものが追加されていのかを確認しましょう。
グループでインポートしたものはなぜか「全てのグループ」にすぐ反映されなかったので、フィルターで今回作成したグループを選択します。

↓こんな感じになっていればOKです。

自分で元URLにアクセスし、転送されているかも確認します。
インポート時にエラーが出る方は、csvの形が以下の形式になっているかを再度確認しましょう。

ソース URL,ターゲット URL
ソース URL,ターゲット URL
ソース URL,ターゲット URL


miyadir.com/068,miyadir.com/thegame/068
miyadir.com/203,miyadir.com/thegame/203
miyadir.com/492,miyadir.com/thegame/492