#えむけーろぐ

間違った事を書いていたらやさしく教えてください

URLの末尾にスラッシュはいるのかいらないのか

なんとなく気になってはいたけど、中途半端な理解でずっと放置していたこの疑問。今読んでいる本に答えが書いていたのでメモしておく。おかしな事を書いていたら教えて下さい。

  • ホストのトップのページであれば、あってもなくても同じ
  • ディレクトリの場合は、スラッシュをつけないと、リダイレクトが発生してリクエストが2回発生する(よってつけるのが望ましい)

- Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門

実際にこの本の著者のWebサイトにアクセスし、Chromeの開発者ツールを使って確認してみる。

ホストのトップページであればスラッシュをつけてもつけなくても、Request URLは"http://kmaebashi.com"で同じ。

f:id:mktakuyax:20160625013502g:plain

 

次に、本のサポートページでやってみる。

下のGIFスクリーンショットのように、Request URLに http://kmaebashi.com/programmer/webserver が指定された状態でリクエストを飛ばすと、301 Moved Permanentlyが返され、末尾スラッシュ付きのURL http://kmaebashi.com/programmer/webserver/ へリダイレクトされる。

f:id:mktakuyax:20160625013830g:plain

動的サイトだとまた違った話になってくると思うけど、静的サイトに関しては上の引用はただしそう。

URLの末尾にスラッシュがあれば、リクエストURLがディレクトリを指しているとわかるので、Webサーバは指定されたディレクトリのindex.htmlを返す。スラッシュが無い場合、Webサーバは対応するファイルがあればそれを返せばいいし、そうでなくてディレクトリであれば、スラッシュつきのURLにリダイレクトしている。上の本でも、実際にJavaでこの処理を書いた。

 

 

この頃は言語やフレームワークに依存しないWeb開発全般についての知識をちゃんと身につけようと思って、暇な時間を見つけつつWebサーバを作りながらWebに関する基礎を学んでいる。とても良い勉強になっているので、基礎に立ち返りたくなったら読むと良いと思う。

gihyo.jp