2バイト文字『日本語』の301リダイレクトが上手くいかない

サイトを運営しているとページを移動したり、パーマリンクを変えたくなることがあります。
そんな時は301リダイレクトで古いURLから新しいURLへ転送設定するのですが、これで思いのほか苦戦したのでメモしておきます。

スポンサーリンク

WordPressのプラグイン『Redirection』

このプラグインは301リダイレクトだけでなく、401エラーの監視もしてくれます。
インストールすると日本語化された状態で開始できるので、私のような初心者でもとっつきやすいです。
ただしこのプラグイン、日本語(2バイト文字)のパーマリンクを転送しようとすると、途端に不安定になりました。

例えば、「/test/テスト」というパーマリンクがあったとします。
これを同じサイト内で/test/から/test2/へ移動したとします。

転送ルールは

ソースURL:/test/テスト
ターゲットURL:http://xxxx.com/test2/テスト

このように設定したいところですが、これでは転送されないのです。

2バイト文字の部分をエンコードして

ソースURL:/test/%E3%83%86%E3%82%B9%E3%83%88
ターゲットURL:http://xxxx.com/test2/%E3%83%86%E3%82%B9%E3%83%88

とすればうまく転送できるものもありましたが、それでも上手くいかないケースがありました。
ソースURLのエンコードをやめて日本語にしたり、ターゲットURLの方のエンコードをやめてみたりと色々な組み合わせを試したのですが、どうしても転送できない。。。

WordPressのプラグイン『SEO Redirection』

こちらは英語版で日本語化は未対応です。
先に入れた『Redirection』は、下手に日本語に対応しているので動きが複雑になっているのでは?という思いから、2バイト文字の表示を考慮していないプラグインの方が良いかもしれないと思ったのです。

これはDTPの経験から思いついたことで、日本語というのは2バイトを使って一文字を形作っているので、アプリケーションも1バイト環境のものより複雑なことをやっているんですよね。

日本語の環境で開発したプラグインなら間違いはないでしょうが、1バイト環境で作られたプラグインを日本語化しているとなると多少無理があるのかもしれません。

その推察が正しいかどうかはわかりませんが、『SEO Redirection』で

ソースURL:/test/テスト
ターゲットURL:http://xxxx.com/test2/テスト

と設定したところ、問題なく転送されました。

ただし、『SEO Redirection』は無料版では404エラーの監視はできません。

今後は404エラーチェックは『Redirection』で、転送設定は『SEO Redirection』で行うことにします。
ただ、同じようなプラグインが2つも有効になっていると、何か不都合がないか、少し心配です。。。

スポンサーリンク

フォローする