coding WordPress

【WordPress】プラグインRedirectionでURL末尾のスラッシュはいるのかいらないのか

2018年5月29日

 

このブログではパーマリンク(URLの最後にくるページを表す文字列)は投稿のタイトルをかんたんに英語表記に変えたものにしているが、うっかり日本語のタイトルのまま公開してしまうことがある。

そんなとき、あとからあわてて英語表記に変更した時のリダイレクトにプラグイン「Redirection」を使うことが多い。

リダイレクトの設定をしておかないと変更前のURLでアクセスしたときに、「見つかりません」と表示されてしまう。リダイレクトの設定をしておけば、変更前のURLでアクセスしても変更後のURLに転送してくれる。

旧URLでアクセスする人が果たしているのかというのはおくとしても、検索エンジンのクロールエラーを回避しておくに越したことはないだろう。

 

このプラグインを使えば、転送元と転送先のURLを入力するだけで簡単にリダイレクトの設定ができる。(ちなみに、画像の転送元URLの「%E5%AE%〜」は日本語をURLエンコードしたもので、こうしないとリダイレクトしない)

URL末尾のスラッシュは必要なのか

さてそのURLだが、の末尾の「 / (スラッシュ)」はあるのが正しいのかなくてもいいのか。よく考えず設定していたが、ふとどっちが正しいんだ??? と疑問が生じたので調べた。結果、備忘録をかねて解説。(パーマリンクを「.html」付きにしている場合は除きます)

 

結論

Redirection のリダイレクトの設定は2つ必要。

  • 転送元のURLの方がスラッシュありなし両方作る。
  • 転送先のURLはどちらもスラッシュあり(またはスラッシュなしのどちらか)に設定する。

理由

そもそもスラッシュの有無は、どちらも間違いではない。
Googleのウェブマスター向けブログでも「URL 末尾のスラッシュは必要?」かについて解説されていて、その内容から自分が解釈したことを要約すると次のようになる。

URLの末尾にスラッシュがついている場合とそうでない場、それぞれ別物として(そして、同等に)扱われる。
検索エンジンにとっては、この 2 種類の URL がそれぞれ異なるコンテンツでも、同じコンテンツでも良い(一般には同じコンテンツを表示することが多い)が、同じコンテンツを表示する場合には片方がもう一方にリダイレクトする設定にするのが望ましい。

そこでWordPressでサイトを構築した場合どうなるかをみてみると、末尾にスラッシュがあってもなくても同じく投稿が表示されるようになっていて、特に意図して設定を変えていない限り、片方がもう一方にリダイレクトするようになっているようだ。
これを確かめるには公開されているWebアプリの「PC:ステータスコードチェッカー」等を利用するか、Firefox等の開発ツールを用いても良い。

当ブログの投稿で試してみよう。Firefoxを起動してショートカットキーoption + ⌘ + Eで開発ツールの「ネットワークモニター」を開いておいておく。

Windows Mac
ネットワークモニター(開発ツール)を開く
Ctrl+Shift+E ++E

スラッシュなしの「/recycle-tv」でアクセスしてみると、スラッシュ付きの「/recycle-tv/」に301リダイレクトされている。

一方スラッシュ付きの「/recycle-tv/」でアクセスすればリダイレクトはされずそのままであることがわかる。

どちらにリダイレクトされるかは、おそらくWordPressのパーマリンクの設定如何によるのではと思う。私の場合パーマリンクを「投稿名(domain/sample-post/)」にしているのでこうなるのだと思う。

ということで、転送先のURLはどちらかでいい(当ブログの場合はスラッシュありの方でいい)ということだ。

では、転送元のURLはどうか。

転送元のURLもどちらか一方で事足りるのかというとそうではない。先のGoogleの解説にもあったように「URLの末尾にスラッシュがついている場合とそうでない場、それぞれ別物」であるというところがミソだ。

そもそも別の物がたまたま同じコンテンツを表示していたわけで、そのそもそも別のものを変更したわけだから、それぞれを転送する設定をしないといけない。

実際、片方だけredirectionの設定をしてもう一方にアクセスしてみると「見つかりません」となることを確認済み。

 

-coding, WordPress