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」の場合でもリダイレクトされるようになります。