[レベル: 上級]
URL の末尾に付ける「/」(スラッシュ)の あり・なし の違いについて、Google の John Mueller(ジョン・ミューラー)氏が Google+ で説明しました。
結論を言うと、厳密に言えば技術的には異なるケースがありますが、正しく設定していれば通常は気にかける必要はありません。
この記事では、ミューラー氏の説明に僕からの補足を加えて解説します。
ドメイン名の最後に付けるスラッシュの有無は関係なし
URL の最後につける「/」(スラッシュ)を、ミューラー氏にならって「トレイリング スラッシュ (Trailing Slash)」と呼ぶことにします。
おそらく「トレイリング スラッシュ」は明確に定義された技術用語ではなく、単純に「ディレクトリを示す場合の最後のスラッシュ」という意味の一般的な言葉ですが、SEO 俗語としてこの言葉を使います。
URL がドメイン名だけの場合、トレイリングスラッシュはあってもなくても同一に扱われます。
もっと正確に言えば、トレイリングスラッシュが付いた状態で処理されます。
- トレイリングスラッシュなし――https://www.suzukikenichi.com
- トレイリングスラッシュあり――https://www.suzukikenichi.com/
1つ目はトレイリングスラッシュが付いていません。
対して、2つ目は付いています。
ですが、両者の違いを僕たちは気にする必要はありません。
トレイリングスラッシュがない URL でアクセスしても、一般的なブラウザおよび Googlebot はトレイリングスラッシュを付けた状態でサーバーにリクエストを生成します。
つまり、
https://www.suzukikenichi.com
の URL にアクセスしようとしても、実際には
https://www.suzukikenichi.com/
で最初からアクセスします。
リクエストを受け取ったサーバーは、トップのディレクトリ(ルートディレクトリ)に格納されている規定のドキュメント(index.html や index.php など)を返します。
したがって、ドメイン名だけの URL の場合、トレイリングスラッシュは常に「あり」で処理されるので、普通は気にかけなくて大丈夫です。
サブディレクトリの最後に付けるスラッシュの有無は違いを生む、だけど……
ドメイン名の終わりのトレイリングスラッシュとは違って、サブディレクトリの終わりのトレイリングスラッシュのありなしは技術的には異なります。
- トレイリングスラッシュなし――https://www.suzukikenichi.com/blog
- トレイリングスラッシュあり――https://www.suzukikenichi.com/blog/
先ほどと同じように、1つ目はトレイリングスラッシュが付いていません。
対して、2つ目は付いています。
ですが、今回は「blog」サブディレクトリのあとのトレイリングスラッシュの有無です。
両者は明確に違います。
1つ目は、「blog」という名前のドキュメントをリクエストしています(ここで言う「ドキュメント」とは、HTML や画像、スクリプトなどの何らかのファイル・リソースのこと)。
一方で、2つ目は「blog」という名前のディレクトリをリクエストしています。
リクエストを受け取ったサーバーは、blog ディレクトリの中にある既定のドキュメント(index.html や index.php など)を返します。
簡単に言うと、
- トレイリングスラッシュなしの「blog」⇒ blog というファイルをリクエスト
- トレイリングスラッシュありの「blog/」⇒ blog というディレクトリをリクエスト
※技術的な説明としてはざっくりとしすぎているかもしれませんが、わかりやすく簡略化しています(僕たちにはこれで十分)
したがって、サブディレクトリのトレイリングスラッシュは、その有無によって異なる URL として処理されます。
トレイリングスラッシュ「なし」から「あり」へのリダイレクト
ですが、サブディレクトリのトレイリングスラッシュ有無も通常は気にかける必要はないでしょう。
なぜなら、本来ならトレイリングスラッシュを付けるべきサブディレクトリの URL がトレイリングスラッシュなしでリクエストされた場合は、次のような流れになるのが一般的だからです。
- サブディレクトリだけど、トレイリングスラッシュがないためにファイルとしてリクエストされる
- 該当するファイルがないので、トレイリングスラッシュを付けた URL としてサーバーがリダイレクト処理する
- サブディレクトリの URL として新たにリクエストを受け取り、既定のドキュメントをサーバーが返す
https://www.suzukikenichi.com/blog(トレイリングスラッシュなし)でアクセスしても、https://www.suzukikenichi.com/blog/(トレイリングスラッシュあり)に自動的に 301 リダイレクトされます。
Googlebot の場合も同様です。
ということで、サブディレクトリの場合のトレイリングスラッシュの「ありなし」は技術的には異なるのですが、たいていのサーバーでは最終的には「あり」で処理されます。
トレイリングスラッシュの有無は一貫させる
ドメイン名だけの URL でも、サブディレクトリを含む URL でも、トレイリングスラッシュの有無を心配する必要はないと言いました。
とはいえ、URL を自分で記述する際は一貫させるべきです。
リダイレクトされるとはいえ、リダイレクトを挟む分だけ多少なりとも表示速度が落ちます。
ディレクトリを意味するのであれば、トレイリングスラッシュを URL に付けましょう。
サイト内で使う URL においては、トレイリングスラッシュ「あり・なし」の URL を混在させるのではなく、ありで統一しましょう。
rel=”canonical” で指定する URL もトレイリングスラッシュありを設定しましょう。
そして、最後にもう1つ忘れてはならないことがあります。
利用しているサーバーが、トレイリングスラッシュなしの URL をトレイリングスラッシュありにリダイレクトする設定になっているかどうかを確認しましょう。
たいていのサーバーは設定済みのはずですが、念のためチェックしておくことを推奨します。
トレイリングスラッシュの有無に関しては、このブログで詳しく解説したことがあります。
かなり昔ですが、内容は古くなっていないので読んでおくといいでしょう。
Web担当者Forum の連載コラムで書いたこちらの記事もあわせてどうぞ。
さらに詳しく知りたい人は、RFC をどうぞ。