WordPressのプラグイン「Redirection」を使っています。
パーマリンク編集が抜けていて日本語URLになってしまっていた記事のURLを英文字のみに直しました。
プラグインの仕様で、リダイレクト設定を自動的に生成してくれたのですが、うまく転送されませんでした。
404のページが表示されます。
焦ったので、備忘録として記事を残しておきます。
問題
URLが日本語になってしまっているページを見つけました。
一応、サイトのポリシーとして、すべてURLは英字にしようと考えているので、パーマリンクを編集しました。
プラグインでRedirectionを導入しているので、記事のURLを編集すると、自動で転送ルールが設定されます。
具体的には以下が自動設定されました。
ソースURL: /2017/02/ipod-touch-%e7%ac%ac7%e4%b8%96%e4%bb%a3%e3%81%ab%e6%9c%9f%e5%be%85%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8/
ターゲットURL: /2017/02/expect-ipod-touch-7th-generation/
設定状況を確認してから実際にテストしてみたところ、転送されませんでした。
404エラーのページが表示されてしまいます。
Redirectionのログでは、404エラーになったことが分かりましたが、転送された形跡はありませんでした。
対応方法
転送ルールのソースURLに、大文字のエンコード済みURLを書きました。
具体的には以下です。
ソースURL: /2017/02/ipod-touch-%E7%AC%AC7%E4%B8%96%E4%BB%A3%E3%81%AB%E6%9C%9F%E5%BE%85%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8/
ターゲットURL: /2017/02/expect-ipod-touch-7th-generation/
これはしっかり機能しました!!
URLの小文字と大文字を区別することを思い出したのでした。
あたふたしながら調査している中でも、気付いてよかったです!
調べたこと
無駄でしたが、いろいろ調べたので記録だけしておきます。
こういうことも書いておかないと忘れそうなので。。
日本語URLを書いた
Redirectionの設定で、ソースURLに日本語URLをそのまま日本語で書いてみました。
しかし、機能せずでした。。
よく考えれば当たり前のことなのですが、焦って正気を失ってしまっていましたw
エンコードとデコードを確認
霧中にあったので、日本語URLのエンコードとデコードを見てみることにしました。
何か誤りがあるのかもしれないと考えたのです。
結果的に、この行為の延長線上で大文字の問題に気付けました。
エンコードとデコードに使ったサイトは以下です。
cssのお勉強によく利用しているサイトでした。
URLを並べて比較
テキストエディターに、404になるURLとRedirectionに設定してある定義のソースURLを貼り付けて比較してみました。
上下に貼り付けて、目で見るのです。
ここで、URLでは大文字と小文字を区別することを思い出し、上記の対応になりました。
ちなみに大文字と小文字を区別するのは、正確にはファイルシステムに拠るところです。今回はLinux系システムなので区別するほうなのです。
ご意見やご感想などお聞かせください! コメント機能です。
逆じゃありませんか?英大文字だとリダイレクトされず、英小文字でリダイレクトされます。Redirection バージョン 2.7.3です。
まさぼう さん
ご指摘ありがとうございます。
当方環境もバージョン2.7.3です。(更新済みです)
やはり「Source URL」には、大文字を設定することでリダイレクトします。
小文字だとリダイレクトできずに404になります。
実際に動かして確認してみました。。
考えられるのは、サーバー環境の違いでしょうか。。
Linuxの設定でしょうか。。
以下でも話題となりましたが、Redirection Ver.4.0 から大文字小文字を無視できるオプションができたようですね。
https://github.com/johngodley/redirection/issues/53
https://wordpress.org/support/topic/ignoring-character-case/
> 4.0 – 23rd Feb 2019
> Add option for case insensitive redirects
大文字小文字の両方を登録していたので、楽になりました。
情報ありがとうございます!