リダイレクトの落とし穴。大文字と小文字は区別される。

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のエンコードとデコードを見てみることにしました。
何か誤りがあるのかもしれないと考えたのです。
結果的に、この行為の延長線上で大文字の問題に気付けました。

エンコードとデコードに使ったサイトは以下です。

URLエンコード・デコードフォーム/処理完了[Web便利ツール] - TAG index

cssのお勉強によく利用しているサイトでした。

URLを並べて比較

テキストエディターに、404になるURLとRedirectionに設定してある定義のソースURLを貼り付けて比較してみました。
上下に貼り付けて、目で見るのです。

ここで、URLでは大文字と小文字を区別することを思い出し、上記の対応になりました。
ちなみに大文字と小文字を区別するのは、正確にはファイルシステムに拠るところです。今回はLinux系システムなので区別するほうなのです。

この投稿を書いたのは・・・
Blog Admin

ガジェットが大好きで、ほぼ毎月何かしら調達しております。
無駄遣い扱いされたくないのと、何かの役に立つかと思い、記録を書くことにしたのでした。

お出かけのときには、スマホを複数台とタブレットとパソコンを持ち歩きます。
両手首にはスマートウォッチです。
こんなスタイルで生活している中での備忘録を書いています。

「Blog Admin」をフォローしてみる
ブログ関連
「Blog Admin」をフォローしてみる

ご意見やご感想などお聞かせください! コメント機能です。

  1. まさぼう より:

    逆じゃありませんか?英大文字だとリダイレクトされず、英小文字でリダイレクトされます。Redirection バージョン 2.7.3です。

    • Blog Admin Blog Admin より:

      まさぼう さん

      ご指摘ありがとうございます。

      当方環境もバージョン2.7.3です。(更新済みです)
      やはり「Source URL」には、大文字を設定することでリダイレクトします。
      小文字だとリダイレクトできずに404になります。
      実際に動かして確認してみました。。

      考えられるのは、サーバー環境の違いでしょうか。。
      Linuxの設定でしょうか。。

  2. 以下でも話題となりましたが、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

    大文字小文字の両方を登録していたので、楽になりました。

タイトルとURLをコピーしました