当前位置:首页 > 娱乐

绝对路径和相对路径的区别

绝对路径和相对路径的绝对径区别

你写网页时,<img src="/images/logo.png"> 和 <img src="images/logo.png"> 看着差不多,和相但前者是对路绝对路径,后者是区别相对路径。这俩搞混了,绝对径图片就裂了,和相样式表就丢了,对路整个页面直接裸奔。区别

绝对路径从根目录开始写。绝对径就像你告诉别人“我家住在北京市朝阳区某某路某某号”,和相从头到尾,对路一步不落。区别在网站里,绝对径根目录就是和相域名后面那个斜杠。比如 https://example.com/css/style.css,对路这个 /css/style.css 就是绝对路径。不管你在哪个页面引用它,浏览器都能从域名根部开始找,铁定能找到。服务器上的绝对路径更直接,/var/www/html/index.html,从文件系统的根开始数,一个目录都不许漏。

相对路径就灵活多了。它不写根,只写“从当前位置怎么走”。就像你在商场里问路,保安跟你说“上三楼右转”,这个“三楼”是相对于你站的地方说的。你在 /pages/about.html 里写 ../images/logo.png,意思是先退回上一级目录 /pages 的上级,也就是根目录,再进 images 文件夹。但你把这个文件挪到 /pages/blog/post.html 里,同样的代码就指向了 /pages/blog/../images/logo.png,实际解析成 /pages/images/logo.png——完全变了地方。

我见过最坑的情况是,有人把整个站点文件夹拖到另一个子目录里测试,结果所有绝对路径的图片和链接全部失效。为什么?因为绝对路径死死咬住根目录不放,你站点根目录一变,它全瞎了。相对路径反而没事,因为它是按文件之间的相对关系找的,文件夹整体搬家,内部关系不变,照样跑得通。

但相对路径也有自己的毛病。你在一个深层页面里引用资源,得写一堆 ../../../../,看得人眼晕。而且如果页面用了 URL 重写(比如伪静态),当前路径可能不是你文件实际所在的位置,相对路径就会算错账。这种时候,绝对路径反而更稳,至少它不受当前 URL 的干扰。

我个人有个习惯:写网页模板时,能用相对路径就用相对路径。因为模板可能被 include 到不同层级的页面里,绝对路径一换环境就崩。但写配置文件、robots.txt、sitemap.xml 这类固定位置的文件,我会用绝对路径——它们不需要挪窝,而且搜索引擎抓取时更明确。

还有个小细节容易忽略:路径开头的斜杠到底加不加。加了 / 就是绝对路径,不加就是相对路径。很多人写 src="images/logo.png",以为这是相对路径,没错,但它是相对于当前页面的 URL 路径,而不是文件系统路径。如果当前页面是 /products/item.html,那这个图片指向的是 /products/images/logo.png,不是你想象中根目录下的 images 文件夹。这个坑,新手踩得特别多。

选哪种路径,本质上是问自己:这个文件会不会搬家?引用它的页面会不会搬家?如果都不动,随便用。如果会动,优先相对路径。但如果你在写一个公共组件,被几十个页面引用,且这些页面分布在不同的目录层级——那建议直接用绝对路径,省得每个页面都得算一遍相对关系。别迷信哪种方式更优,要看你的项目结构到底长什么样。

分享到: