URL网址是什么意思?地址栏那串字符拆开就五段,井号后面的内容根本不出网

上礼拜我姐微信甩来一串网址,说死活打不开,让我瞅瞅。我一看就乐了:那网址在她复制的时候就断了半截,路径只剩一个开头字母,后面全没了。微信里长网址折行,她复制的时候从中间截断了。我把完整网址发回去,她一点就开了,还问我:这串字符里到底哪段是重要的,哪段是可有可无的?
这个问题还真值得掰扯掰扯。地址栏里那串东西学名叫URL,我把自己博客的网址拆开测了一晚上,五段各管一摊,搞明白之后再遇到"网址打不开",基本看一眼就知道断在哪。
先把一串网址解剖了:五段各管一摊
拿我自己博客的一篇文章当标本:
https://www.shunot.com/lybk/1069.html
从左往右拆:https:// 是协议,www.shunot.com 是域名,中间省略了一个端口(443),/lybk/1069.html 是路径。要是网址再长一点,后面还能挂上?参数和#锚点,比如 https://www.shunot.com/lybk/1069.html?v=2#comment-8,这就是完整的五段。
打个比方:协议是你出门开的车还是走的路,域名是小区地址,端口是几号楼,路径是几零几室,问号后面是你给主人捎的话,井号后面是你自己记的"进门直接奔冰箱"。捎的话主人能看见,奔冰箱这个念头主人压根不知道——这句比喻后面实测会兑现。
| 段落 | 长啥样 | 管什么 | 打错了会怎样 |
| 协议 | https:// | 走加密道还是裸奔道 | 内网设备常见打不开 |
| 域名 | www.shunot.com | 找到哪台服务器 | 直接跳到搜索页 |
| 端口 | :443 或 :8080 | 走服务器哪扇门 | 连接超时转圈 |
| 路径 | /lybk/1069.html | 要哪个文件 | 404页面 |
| 问号/井号 | ?v=2#comment-8 | 捎话/自己记号 | 多半还能打开 |
协议、域名和端口:前半截管找到服务器
先说个反常识的实测。我把域名全改成大写 HTTPS://WWW.SHUNOT.COM/lybk/1069.html 去请求,返回200,跟原来一模一样。因为域名的规矩就是不区分大小写,你敲成 Www.ShUnOt.CoM 都行,域名只是给服务器报门牌,报门牌这件事不在乎你大小写。
协议头平时根本不用手输。你在地址栏敲 shunot.com 回车,浏览器自动补上 https:// 和 www.,这是它干的好事。但这个自动补在内网设备上会翻车:访问老路由器后台敲 192.168.1.1,新浏览器默认给你补成 https://,而老设备压根不支持加密,直接白屏转圈。这时候要手动把 http:// 四个字母敲全,我在进不去后台那篇里写过这个坑,手机上尤其高发——敲 192.168.1.1 结果跳出来一个搜索结果页,那是输入法把地址当搜索词了,处理办法在手机登录后台那篇里。
https 比 http 多了个锁,传输过程加密。哪些场合必须计较这个锁、哪些场合不用慌,我之前抓包对比过,明文里连服务器版本号都看得一清二楚,那篇讲得更细。
域名和端口中间还藏着一段:端口。你可能从来没在网址里见过它,因为平时它不露面——https 默认走443,http 默认走80,浏览器替你省了。什么时候端口必须写?服务器不在默认门上的时候。
我家 NAS 的音乐服务器跑在 8080 端口,访问就得写 http://192.168.31.20:8080,少写冒号后面那截,浏览器去敲80号门,那扇门没人应。这套"门牌号"的讲究我专门写过一篇,3389、5005、554 这些数字是谁定的、端口映射时为什么外部端口内部端口是两个框,都在那篇里。
端口写错的症状很有辨识度:不是404,是一直转圈最后超时。因为404好歹是"门开了但没这文件",端口错是"这扇门压根没开",服务器连理都不理你。
路径那段:一个字母打错就变样,大小写是真敏感
路径是五段里最较真的一段。我实测把 /lybk/ 改成 /LYBK/ 去请求,服务器返回301跳转,给我弹回小写地址;换成 /Lybk/ 也是301。我这博客的服务器算脾气好的,做了兼容跳转,多绕一跳还能到。但绝大多数网站的服务器没这么好心——跑在 Linux 上的网页服务器,文件系统本身就区分大小写,路径大写小写是两个不同的文件,直接一个404甩你脸上。
我姐复制断掉的那串网址,坏的就是路径这段:域名还在,路径剩个开头,自然啥都找不到。所以网址打不开先看路径全不全,尤其是从微信、短信里复制出来的长网址,最容易被折行截断。
顺带说一句,域名和IP也能互换着用。域名本质上是为了让人记住IP才发明的翻译系统,你直接敲IP地址也能访问,只是现在的网站大多一个IP挂好几个站,靠域名分家,直接IP访问经常会落到默认页。IP和域名各自的门道之前写过,192.168开头的为啥外网连不进来那篇讲得透。
问号和井号:一个发给服务器,一个只在你电脑里
这是五段里最有意思的两兄弟,长得像,命运完全不同。
问号后面叫查询参数。我实测在网址后面挂了个 ?v=20261004 去请求,返回200,内容跟原来一模一样——因为我这服务器根本不理这个参数,原样把页面给我了。但参数不是摆设:搜索页的 ?q=关键词、视频网站的 ?v=视频编号,靠的都是它。你把搜索结果网址发给别人,问号后面那截就是别人的搜索词,一并发过去了。
井号后面叫锚点,这个是真正的冷知识:我抓包看了一眼,网址带 #comment-8 去请求,服务器收到的请求行是 GET /lybk/1069.html——井号后面的内容压根没有出网,它只活在你自己的浏览器里,用来在页面加载完之后跳到某个位置。评论区直达链接、网页目录跳转,都是它干的。
这个特性有个实用玩法:网页卡在旧内容刷新不出来的时候,在网址后面随手加个 ?123 再回车,等于骗浏览器"这是个新网址",绕过缓存重新拉一遍。当然正经办法是 Ctrl+F5,四层缓存怎么清我写过一篇,微信内置浏览器那个缓存坑也在那篇里。
百分号那串密码文:空格变%20,密码带#的坑我踩过一小时
网址里不能有空格和中文这些"特殊字符",它们会被翻译成百分号开头的三位密码文:空格是 %20,中文一个字能变成九个字符。我实测在路径里塞了个裸空格去请求,直接连不上;换成 %20 之后请求正常发出去了,返回404——说明服务器收到了、也把%20还原成了空格去找文件,只是那个带空格的文件不存在而已。
这套转义最坑人的场景是密码。我给表弟的监控摄像头配流地址,密码里带个井号 #,填进去怎么都连不上,折腾快一小时才反应过来:井号在网址里是"锚点开始"的记号,服务器只读到井号前面就把密码截断了。把 # 换成 %23 再填,秒连。摄像头流地址、NAS直链这类把密码拼进网址的场合,密码里的井号、艾特号、空格都得按这套规矩转义。
反过来,你在地址栏里看到 %20、%23、%E4%BB%80 之类的天书,别慌,那就是空格、井号和汉字的网址马甲,浏览器复制粘贴的时候自动给你穿上的。
收尾:网址打不开,照这个顺序扫五段
| 症状 | 先查哪段 | 多半的原因 |
| 跳出来个搜索页 | 协议/域名 | 地址被当搜索词了 |
| 白屏转圈到超时 | 端口 | 端口没写或写错 |
| 404页面 | 路径 | 复制断了半截或大小写 |
| 页面是旧的 | 问号段 | 缓存,加?123或Ctrl+F5 |
| 打开了但没跳到指定位置 | 井号段 | 锚点丢了或页面改版 |
我姐现在看网址已经会分段了,上个月她还自己发现一个网址里的 utm_source 字样,问我这是不是跟踪她从哪点进来的——问号后面那些 utm 开头的参数,十有八九就是干这个的,删掉再访问,页面照常开,世界清净了。

发表评论