🔌 第一章 浏览器生成消息
📄 一句话概括

路径末尾带斜杠是目录、不带才是文件名;省略时由服务器按默认文件补齐(index.html 等)——只写域名时,访问的就是站点的门面。

📝 本节和前面几节的关系

1.1.2 把 URL 切成了服务器名和路径;本篇处理路径里最常见的【没写全】——省略的部分有规矩地补回来。

一、省略了什么,补什么

末尾带 / 是目录,服务器自动补默认文件; 末尾不带 / 是文件名,写错才需要浏览器补 / 重试; 整个路径都省略时,就是请求根目录的默认文件。

二、为什么这样设计

网址要人写、要人口传——越短越好; 把默认文件名藏进服务器配置,访客只需记域名和目录。

三、动手 Demo:省略的部分由谁补

三种省略形态,一张表看清补全规则:

cases = [('/dir/',    '目录+默认文件'),
           ('/dir',     '先当文件,404后补斜杠重试'),
           ('(空路径)', '请求根目录默认文件')]
for x, rule in cases:
    print('%-9s => 补全规则: %s' % (x, rule))

实跑输出:

--------------------------------------------------------------------
省略的部分由谁补
--------------------------------------------------------------------
  省略有三种,补法各不同:

  你输入的     实际请求的                        补全规则
  ------------------------------------------------------------------------------------
  /dir/        /dir/index.html                   目录 + 默认文件
  /dir         /dir/index.html(先当目录试)     无斜杠当文件,404 后浏览器补斜杠重试
  只写域名     /index.html                       整个路径省略 = 要根目录的默认文件
  ------------------------------------------------------------------------------------

  所以输入 http://www.lab/ 和输入 http://www.lab/xxx.html 看到的
  可能是同一个页面——前者是服务器替你补了默认文件名。

常见默认文件名是 index.html(Apache 系)或 default.htm(IIS 系), 由服务器配置决定,访客不用管。

30 秒实验

  1. 访问一个网站首页和直接访问 /index.html,对比网址栏变化。
  2. 输入一条不带斜杠的目录地址,看浏览器是否帮你补了斜杠。
  3. 找一条返回 404 的省略写法,理解服务器没找到默认文件的情况。

常见误区

  1. 以为 /dir 和 /dir/ 是同一个请求——服务器收到的路径字面上不同。
  2. 以为默认文件名是浏览器定的——它由服务器配置说了算。
自测三问(点开对答案) 1. 末尾带斜杠和不带斜杠,分别表示什么? —— 带斜杠是目录,不带是文件名。 2. 只写域名时,实际请求的是哪个文件? —— 根目录下的默认文件(如 /index.html)。 3. 默认文件名是谁规定的? —— 服务器的配置,不是浏览器。

相关笔记