WordPressプラグイン「Redirection」の正規表現を活用する

Redirectionはリダイレクトを設定できるWordPressのプラグインです。例えば下記のようなサイトマップのサイトがあったとします。

┣ ホーム
┣ 会社案内   /company/
┃ ┣ 会社概要 /company/outline/
┃ ┣ 沿革   /company/history/
┃ ┣ 関連企業 /company/associated/

ここで、「会社案内」にはコンテンツがなく、「会社案内」へのアクセスは「会社概要」へリダイレクトさせたいという場合、Redirectionで単純に設定すると下記のようになるかと思います。

ソース URL /company/
一致条件 URLのみ、URLへ転送、正規表現なし
ターゲット URL /company/outline/

これで、会社案内(/company/)へのアクセスは会社概要(/company/outline/)へリダイレクトさせることができます。しかし、ここで「/company/#header」とか「/company/?d=hoge」とかにアクセスするとどうでしょう。そう、「会社案内」が表示されてしまうのです。

正規表現を活用する

なぜ「/company/#header」とか「/company/?d=hoge」へのアクセスがリダイレクトされないかというと、正規表現を使用しなかった場合、「ソース URL」が完全一致で判定されることになるため、「/company/」の後ろに余計な指定のついた「/company/#header」とか「/company/?d=hoge」の場合はリダイレクトがされなかったのです。

そこで、「/#」「/?」がつく場合もリダイレクトされるように、正規表現を用いて下記のように設定します。

ソース URL ​/company​/([#\?].*)?$
一致条件 URLのみ、URLへ転送、正規表現あり
ターゲット URL /company/outline/

「/company​/([#\?].*)?$」は、「/company/」の後に「#」もしくは「?」から始まる文字列が0回か1回の場合、という意味になります。これで「/company/#header」とか「/company/?d=hoge」の場合でもリダイレクトされるようになります。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。