新同事问,浏览器地址栏那一长串英文到底是什么意思,为什么有的带问号,有的带井号,看着像乱码。

拿一个完整地址拆开看

https://www.example.com:8443/shop/item?id=12&from=list#review。https 是协议,www.example.com 是主机,8443 是端口,/shop/item 是路径,问号后面是查询串,井号后面是锚点。少了端口就用协议默认值,https 是 443,http 是 80。

问号和井号的区别

问号后面的键值对会随请求发给服务器,后端用它筛数据、分页、带来源。井号后面留在浏览器本地,不会发送,常用来定位页面里的某个位置,前端路由也拿它做文章。改井号不会重新请求页面,很多单页应用靠这个切换视图。

那些百分号是什么

URL 只能安全传输一部分字符,中文、空格、斜杠都要转义。空格变 %20,中文按 UTF-8 转成三个百分号编码。JS 里用 encodeURIComponent 处理参数值,别把整个地址都编了,会把斜杠也编掉,服务器就找不到路径。

相对地址和绝对地址

以 / 开头是站内绝对路径,从域名根开始;不带 / 是相对当前目录;//example.com 省略协议,跟随当前页面。写链接时少用相对路径,目录一改就全断,尤其是后台和前台不在一层的时候。

协议和端口别忽略

http 和 https 是两套地址,混用会触发跨域和证书问题。非标准端口要显式写,CDN 回源时经常因为端口不一致导致 502。域名后面带路径的,注意反向代理有没有截断前缀。

常见误区

URL 不等于域名,也不等于文件路径。它是一套统一资源定位规则,同一个页面可以有多个 URL,带参数的、带井号的都算。做 SEO 时要注意参数重复收录,用 canonical 指明主地址。

URL 既是资源地址,也是参数载体。看懂结构,排查 404 和参数丢失会快很多。