WordPressのプラグインに「Redirection」があります。
このプラグイン、パーマリンクの設定を変更したあと活躍しました。
Redirectionに転送ルールを書くだけで、まとめて転送できて便利なのですが、ちょっと間違えると無限ループになってしまいます。
この記事では、Redirectionの転送ルールの書き方の基本をご紹介します。
シンプルな例
別のページに転送する場合
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
注意する場合(「^」が必要)
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
のようにします。
こうすると、ルールは
のようにドメイン名直後の記事名だけに適用されて
のようにドメイン名と記事名の間に別の文字がある場合はルールが適用されません。
これで無限ループを防ぐことができます。
もう一つの例
ディレクトリが複数になった場合でも、新しいディレクトリ名が追加される場合は同じです。
- 旧URL:http://ドメイン名/日付など/記事名
- 新URL:http://ドメイン名/追加するディレクトリ名/日付など/記事名
たとえば、次のように転送する場合です。
- 旧:https://itakayumukumi.com/date/2017/08
- 新:https://itakayumukumi.com/archives/date/2017/08
ルールは次のようになり
- ソースURL:^/date(.*)
- ターゲットURL:/archives/date/$1
コメント