WordPressのプラグインRedirectionでの転送を設定する

WordPressのプラグインに「Redirection」があります。

このプラグイン、パーマリンクの設定を変更したあと活躍しました。

Redirectionに転送ルールを書くだけで、まとめて転送できて便利なのですが、ちょっと間違えると無限ループになってしまいます。

この記事では、Redirectionの転送ルールの書き方の基本をご紹介します。

シンプルな例

Photo by rawpixel on Unsplash

別のページに転送する場合

1つのページを別のページに転送する場合です。

  • 旧:http://ドメイン名/旧ファイル名
  • 新:http://ドメイン名/転送先のファイル名

たとえば、ページ492を、5000に転送するには、

  • ソースURL:/archves/492
  • ターゲットURL:http://oversleptabit.com/archives/5000

カテゴリ名を取り除く

カテゴリ名を含んでいたパーマリンクからカテゴリ名を取り除く場合です。

  • 旧:http://ドメイン名/カテゴリ名/旧ファイル名
  • 新:http://ドメイン名/新ファイル名

カテゴリ名「Linux」を取り除きます。

ソースURL: /Linux/(.*)
ターゲットURL:https://oversleptabit.com/archives/$1

ファイル名の接頭辞を取り除く

ファイル名がすべて「post-3322」のように「post-」から始まるページを単に数字だけのページに転送します。

  • 旧:http://ドメイン名/post-数字
  • 新:http://ドメイン名/数字

 

  • ソースURL:/post-([0-9]*)
  • ターゲットURL:https://oversleptabit.com/$1

注意する場合(「^」が必要)

Photo by Grzegorz Walczak on Unsplash

URLに別の文字が加わって長くなる場合は注意が必要です。

  • ディレクトリ名を付け加える
  • 「post-」などの接頭辞をつける

などの場合です。

ディレクトリ名を追加する

  • 旧URL:http://ドメイン名/記事名
  • 新URL:http://ドメイン名/archives/記事名

上のやり方で

  • ソースURL: (.*)
  • ターゲットURL: https://oversleptabit.com/archives/$1

とすると無限ループに陥ります。

その理由は、

(.*)

では、

「http://ドメイン名/記事名」の「記事名」すべてを表すので

転送ルールが適用された

http://ドメイン名/archives/記事名

の「記事名」にも適用されてしまいます。すると

http://ドメイン名/archives/http://ドメイン名/archives/記事名

のようになり、最後の「記事名」にルールが適用されてい

http://ドメイン名/archives/http://ドメイン名/archives/http://ドメイン名/archives/記事名

となり、さらに「記事名」にルール適用されて、、、と終わりがなくなります。

これを防ぐには

「^」をつけて

  • ソースURL:^(.*)
  • ターゲットURL: https://oversleptabit.com/archives/$1

のようにします。

こうすると、ルールは

https://oversleptabit.com/

のようにドメイン名直後の記事名だけに適用されて

https://oversleptabit.com/archives/

のようにドメイン名と記事名の間に別の文字がある場合はルールが適用されません。

これで無限ループを防ぐことができます。

もう一つの例

ディレクトリが複数になった場合でも、新しいディレクトリ名が追加される場合は同じです。

  • 旧URL:http://ドメイン名/日付など/記事名
  • 新URL:http://ドメイン名/追加するディレクトリ名/日付など/記事名

たとえば、次のように転送する場合です。

  • 旧:https://itakayumukumi.com/date/2017/08
  • 新:https://itakayumukumi.com/archives/date/2017/08

ルールは次のようになり

  • ソースURL:^/date(.*)
  • ターゲットURL:/archives/date/$1

 

コメント