WordPressで幾度もカテゴリーや記事のスラッグを変更していると、知らず知らずのうちに“リダイレクトチェーン(多段階転送)”が発生してしまうことがあります。
これがSEOや表示速度に悪影響を与える可能性も…。今回は、そのリダイレクトチェーンを洗い出す簡単なツールをMicrosoft Accessで自作したので、その作り方を紹介します!
ツールの概要
このツールは、WordPressのプラグイン「Redirection」からCSV形式でエクスポートした転送ルールをもとに、簡単なクエリでリダイレクトチェーンを検出します。
テーブルの作成やデータの取り込みはウィザード任せなので、ほぼマウス操作だけで完成します。作成するクエリも2つだけで、知っておくと役立つテクニックも紹介した、Access初学者の方にもやさしい内容となっています。

Redirectionのエクスポート機能の仕様により、作成するツールは、位置情報(Position)による転送ルールの優先順位付けや、正規表現には対応していません。
転送ルールのエクスポート(Redirection側)
先ず最初に、Redirectionの転送ルールをCSV形式でエクスポートします。エクスポートは、「インポート/エクスポート」タブから実行できます。
- 「すべて」のままでOK。詳細は以下のペンマークを参照。
- 「エクスポート」から「WordPress リダイレクト」「CSV」を選択
- [ダウンロード]ボタンをクリック
[表示]ボタンをクリックすると、エクスポートの内容を確認することができます。
このCSVファイルは、先頭行にタイトルを持ち、フィールドはコンマ(,)で区切られ、各値はダブルクォーテーションで囲まれていることが分かります。これら仕様は、このあとのAccessのインポート定義に使用します。
CSVファイルのフィールド一覧
項目名 | 説明 |
---|---|
source | リダイレクト元のURLパスです。例えば /old-page のように、リダイレクトの元になるURLのパス部分を指定します。ドメイン部分は含まれません。 |
target | **リダイレクト先のURL(ターゲット)**です。完全なURLまたは相対パスを指定できます。例: /new-page や https://example.com/new-page など。 |
regex | 正規表現を使用するかどうかのフラグです。true であれば source の内容が正規表現として扱われます。false であれば文字列の完全一致でマッチします。 |
code | HTTPステータスコードです。最も一般的なのは 301 (恒久的なリダイレクト)ですが、302 (一時的リダイレクト)や他のコードも指定可能です。 |
type | リダイレクトのトリガータイプです。通常は url (URLベースのリダイレクト)が使用されます。他に「クエリパラメータ」「ヘッダー」などを使うこともあります。 |
hits | **このリダイレクトが発生した回数(アクセス数)**です。ユーザーが source にアクセスして、target にリダイレクトされた回数の累計です。 |
title | この転送ルールのタイトルまたはメモです。管理画面での識別のためのラベルとして使えます。空欄でも動作に支障はありません。 |
status | ルールのステータスです。active であれば有効、disabled であれば無効化されたルールです。 |
転送ルールのインポート(Access側)
先ほどのCSVファイルをAccessにインポートします。インポート操作によって、新たにテーブルが作成されてデータが格納されます。
ウィザードの起動
Accessを起動して、空のデータベースを作成します。次に「外部データ > 新しいデータソース > ファイルから > テキストファイル」の順に選択して、外部データ取り込みのダイアログを表示します。
ダイアログに、データソース(先ほどのCSVファイル)と保存方法を指定して[OK]ボタンをクリックすると、ウイザードが起動します。

インポートの定義
テキスト インポート ウィザードが起動したら、そのまま[次へ]ボタンをクリックして最初の画面をスキップします。
次の画面が表示されたら、「先頭行をフィールド名として使う」にチェックを入れて、[設定]ボタンをクリックします。
インポートの定義は、次の画面でまとめて実施するのが効率的です。
定義が終わったら、[OK]ボタンをクリックしてもとの画面に戻ります。
- 「区切り記号付き」を選択
- 「コンマ(,)」を選択
- 「ダブルクォーテーション(”)」を選択
- 「Unicode (UTF-8)」を選択
- フィールド情報が一覧表示されるので、ここで確認しておく
- 確認が終わったら[OK]ボタンをクリックしてもとの画面に戻る
ものとの画面に戻ったら[次へ]ボタンをクリックします。
フィールド情報の設定画面が表示されますが、先ほどまとめて確認済みなので、[次へ]ボタンをクリックしてスキップします。
主キーの設定
主キーの設定を指定する画面が表示されます。
今回取り込むフィールドに、主キーに使えるところはないので、「自動的に設定」を選択したままにしておきます。
- 「自動的に設定」を選択
- [次へ]ボタンをクリック
インポートの実行
テーブル名を入力して[完了]ボタンをクリックすると、インポートが始まります。

- 作成するテーブル名を入力(日本語も使用できます)
- [完了]ボタンをクリックするとインポートが始まります
インポートが完了すると操作の保存を促すメッセージが表示されますが、今回は保存しても再利用できる条件は限られるので、そのまま閉じます。
テーブルのラップ
作成したテーブルは、直接使わず一度クエリで“ラップ(抽象化)”しておくと、あとから条件を変更する際にも柔軟に対応できて便利です。
あとで詳細を設定するので、ここではクエリで簡単にラップしておきます。
検出クエリの作成
今回は、2段階及び3段階のリダイレクトを検出するクエリを作成します。
以降、順を追って説明します。
クエリ構造の設定
使用するテーブル/クエリを追加して、テーブル/クエリ間の結合(リレーション)を設定します。
テーブル/クエリの追加
リダイレクトチェーンを辿るのに、このクエリでは転送ルールを再帰的に使用します。
先ほど転送ルールのテーブルをラップしたクエリを3つ、クエリデザイン画面の上部エリアにドラッグ&ドロップします。
「クエリ名」及び「クエリ名_1」、「クエリ名_2」が表示されたと思います。
リレーションの設定(一つ目)
今から「クエリ名」と「クエリ名_1」の間に、リレーションを設定します。
「クエリ名のTarget」を選択後にドラッグして、「クエリ名_1のSource」の上にドロップします。
自動的にリレーションを表す線が引かれます。
引かれた線をダブルクリックすると、リレーションの設定が表示されます。
2段階以上のリダイレクトになっているということは、「Target」が次の転送のまた「Source」になっているということですね。なので、
結果を2段階以上のリダイレクトに絞るには、
両方のテーブルの結合(している)フィールドが同じ(値の)行だけを含める(絞る)。
ということになります。
※これはデフォルトなのでこのままでOKです。
リレーションの追加(二つ目)
さらに、三段階以上のリダイレクトを選別できるように、先ほどの要領で、「クエリ名_1」と「クエリ名_2」の間にもリレーションを追加します。
今回のリレーションのプロパティは、前回とは違います。
同じように設定すると、3段階以上のリダイレクトだけに絞り込まれてしまい、2段階のリダイレクトは表示されなくなってしまいます。そこで、
2段階以上のリダイレクトに絞って、さらに3段階以上のリダイレクトを選別するには、
クエリ名_1の全レコード(に)
と、クエリ名_2の同じ結合フィールドの(値が同じ)レコードだけを含める。(すなわち、クエリ名_2に該当するレコードが無い場合はNull値とする。)
ということになります。
完成したクエリ構造は次のようになります。
リレーションのプロパティ設定は表示されている日本が難解なので、そのまま理解しようとすると「???」となりますね。もちろん、間違ってはいないのですが、言葉足らずといったところでしょうか。
出力フィールドの設定
次は出力フィールドの設定です。表示するフィールドの選択、抽出条件、並べ替え、関数の指定などを行います。
出力フィールドの選択
テーブルのフィールドを、クエリグリッドにドラッグ&ドロップして選択します。
次のスクリーンショットは、出力したいフィールドを一通り選んで並べ替えを指定したところです。フィールドのラベルは、表示した時に分かりやすいように、Source、1st Target、2nd Target、3rd Targetに変更しています。
出力フィールドの追加
このままでは、どの転送ルールが適用されているのか分からないので、リダイレクトのルートを「A→B→C」(ABCは転送ルールのID)で表すフィールドを追加したいと思います。
次の式をクエリグリッドの先頭に追加します。フィールド上で右クリックからズームを選択すると、小さなエディタが開くので、式が入力しやすくなります。
Route:
[Q_転送ルール].[ID] & "→" & [Q_転送ルール_1].[ID]
& IIf([Q_転送ルール_2].[ID] Is Not Null,"→" & [Q_転送ルール_2].[ID],"")
適用する転送ルールの設定
最後に、転送ルールをラップしたクエリを使って、有効な転送ルールだけに絞り込みます。
「Type」フィールドが”url”で、「Status」フィールドが”active”の転送ルールだけが抽出されるように、クエリグリッドに抽出条件を追加します。
完成した検出クエリ
クエリの内容
完成した検出クエリを、デザインビューで表示したところです。
SQL ビューで表示すると、次のようになっています。
式の中で使用しているクエリ名やフィールド名が同じであれば、このSQLをビュー内に直接張り付けても動作します。
SELECT
[Q_転送ルール].[ID] & "→" & [Q_転送ルール_1].[ID] &
IIf([Q_転送ルール_2].[ID] Is Not Null, "→" & [Q_転送ルール_2].[ID], "") AS Route,
Q_転送ルール.source AS Source,
Q_転送ルール.target AS [1st Target],
Q_転送ルール_1.target AS [2nd Target],
Q_転送ルール_2.target AS [3rd Target]
FROM
(Q_転送ルール
INNER JOIN Q_転送ルール AS Q_転送ルール_1
ON Q_転送ルール.target = Q_転送ルール_1.source)
LEFT JOIN Q_転送ルール AS Q_転送ルール_2
ON Q_転送ルール_1.target = Q_転送ルール_2.source
ORDER BY
Q_転送ルール.source,
Q_転送ルール.target,
Q_転送ルール_1.target;
実行結果
クエリは、ダブルクリック、右クリックの「開く」、ホームリボンの「表示(データシートビュー)」から実行できます。
なんかマズイくらい検出されてるので、このあとチョット対策します💦
おわりに
「2段階及び3段階リダイレクトを検出可能なクエリ」の作成過程を紹介しました。
今回ご紹介したように、Accessを使えばリダイレクトチェーンのような複雑なデータの関係性も視覚的かつ効率的に把握することができます。
普段はあまり注目されないツールかもしれませんが、Accessはデータの整理・分析において非常に頼れる存在です。基本的な使い方を身につけておくだけでも、さまざまな場面で役立つことでしょう。
ぜひこの機会に、Accessの便利さを実感してみてください。