当前位置:首页 > 网络技术 > 详细内容
相对路径和绝对路径
发布时间:2009/6/3  阅读次数:3026  字体大小: 【】 【】【

             所谓“绝对路径”就是从根目录开始一直到该目录的全程的路径,这样说可能太抽象,举个例子:"c:\apache\htdocs\cgi-bin\test.cgi"就是文件test.cgi的绝对路径。
所谓“相对路径”就是相对于当前目录的路径,举个例子:例如当前目录目录是 "c:\apache\htdocs" 你要浏览 c:\apache\htdocs\cgi-bin\test.cgi文件的内容,那么只需在命令行里输入 "type cgi-bin\test.cgi" 就可以了,要是在"c:\apache\htdocs\cgi-bin\xyz"下呢,那么就是 "type ..test.cgi"。绝对路径是不变的,而相对路径是随用户工作目录的变化而变化。
           相对路径这个概念,在制作网页中极常碰到,比如超链接、连接图片、背景音乐、CSS文件、JS文件、数据库等等,都要了解相对路径的概念。为此,今天专门写篇专题,为了以后引用方便。
什么是相对路径?相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。下面举实例详解:
一、例如在本地硬盘有如下两文件,它们要互做超链接
             G:\site\index.htm
             G:\site\web\article\01.htm
             index.htm要想链接到01.htm这个文件,正确的链接应该是:<a href=web/article/01.htm>链接文字</a>,这是标准的相对路径。
反过来,01.htm要想链接到index.htm这个文件,在01.htm文件里面应该写上这句:
           <a   href=../../index.htm>返回首页</a>。这里的../表示向上一级。
至此,你已经了解相对路径的概念了,就是这样简单明了。如果你还是没有看明白,以前学过DOS吗?它的“CD 文件夹名”和“CD..”命令用过吗?这是同理的。
注意:相对路的文件夹符号是斜杠:/
<a href=/web/article/01.htm>链接文字</a>这样的链接,在href后面的第一个斜杠表示根目录,通常我们要特别慎用这种方式。
二、什么是绝对路径?
在www中(广域网),以http开头的链接都是绝对路径。
三、什么是物理路径?
物理路径指的是某一台计算机本地的路径,以盘符开头,例如C:\、D:\temp等等。

         特别提示:ASP的数据库连接中,只能连接物理路径,而不能连接相对路径,所以需要用server.mappath对象把相对路径转化成物理路径。

相对路径和绝对路径在网页开发中的区别

           在我们刚刚开始接触网页设计时,经常会发生这样问题:做好的网页在自己机器上可以正常浏览,而把页面传到服务器上就总是出现看不到图片,css样式表失效等错误。
  这种情况下多半是由于我们使用了错误的路径,在应该使用相对路径的地方使用了绝对路径,导致浏览器无法在指定的位置打开指定的文件。
  下面就来谈一下最让初学者头疼的   相对路径与绝对路径的区别问题。

  什么是绝对路径:
  大家都知道,在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置。而在网站中类似以http://www.merat.cn/img/photo.jpg来确定文件位置的方式也是绝对路径。
  另外,在网站的应用中,通常我们使用"/"来表示根目录,/img/photo.jpg就表示photo.jpg文件在这个网站的根目录上的img目录里。但是这样使用对于初学者来说是具有风险性的,因为要知道这里所指的根目录并不是你的网站的根目录,而是你的网站所在的服务器的根目录,因此当网站的根目录与服务器根目录不同时,就会发生错误。

  什么是相对路径:
  让我们先来分析一下为什么会发生图片不能正常显示的情况。举一个例子,现在有一个页面index.htm,在这个页面中联接有一张图片photo.jpg。他们的绝对路径如下:
  c:/website/index.htm
  c:/website/img/photo.jpg
  如果你使用绝对路径c:/website/img/photo.jpg,那么在自己的计算机上将一切正常,因为确实可以在指定的位置即c:/website/img/photo.jpg上找到photo.jpg文件,但是当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之没有理由会有c:/website/img/photo.jpg这样一个路径。那么,在index.htm文件中要使用什么样的路径来定位photo.jpg文件呢?对,应该是用相对路径,所谓相对路径,顾名思义就是自己相对与目标位置。在上例中index.htm中联接的photo.jpg可以使用img/photo.jpg来定位文件,那么不论将这些文件放到哪里,只要他们的相对关系没有变,就不会出错。
  另外我们使用“../”来表示上一级目录,“../../”表示上上级的目录,以此类推。(学习过dos的朋友可能更容易理解)
  再看几个例子,注意所有例子中都是index.htm文件中联接有一张图片photo.jpg。
  例:
  c:/website/web/index.htm
  c:/website/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:img/photo.jpg
  这种写法是不正确的,在此例中,对于index.htm文件来说img/photo.jpg所代表的绝对路径是:c:/website/web/img/photo.jpg,显然不符合要求。
  正确写法:使用../img/photo.jpg的相对路径来定位文件
  例:
  c:/website/web/xz/index.htm
  c:/website/img/images/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../img/images/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../img/images/photo.jpg所代表的绝对路径是:c:/website/web/img/images/photo.jpg。
  正确写法:可以使用../../img/images/photo.jpg的相对路径来定位文件
  例:
  c:/website/web/xz/index.htm
  c:/website/web/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../../img/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../../img/photo.jpg所代表的绝对路径是:c:/website/img/photo.jpg。
  正确写法:可以使用../img/photo.jpg的相对路径来定位文件

  总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。

  如何修改样式表的路径:
  使用文本编辑器打开htm文件,查看源代码,在源代码的开头部分<head>......</head>标记中间找到<link rel="stylesheet" href="test.css" type="text/css">。“Href=”后面的内容就是css的路径,我们可以根据以上的知识进行相对路径的转换。
  例:
  c:/website/web/xz/index.htm
  c:/website/css/test.css
  在此例中index.htm中联接test.css文件,可以使用../../css/test.css的相对路径来定位文件,完整的代码标记是:<link rel="stylesheet" href="../../css/test.css " type="text/css">
  错误写法举例:../../../css/test.css
  这种写法是不正确的,在此例中对于index.htm文件来说../../../css/test.css所代表的绝对路径是:c:/css/test.css
  最后,为了避免在制作网页时出现路径错误,我们可以使用dreamweaver的站点管理功能来管理站点。只要使用菜单命令site-new site新建站点并定义站点目录之后,它将自动的把绝对路径转化为相对路径,并且当你在站点中移动文件的时候,与这些文件关联的连接路径都会自动更改,是非常方便的一种批处理链接文件的方法。
      

实际上,无论是DW2也好,FP98也好,绝对路径和相对路径都是指链接指向的方法。
绝对路径就是从我的磁盘根目录开始,一层一层地把文件的具体存放位置写出来,比如你可以试试在浏览器的地址栏那敲 c;\ (注意,c; 不行)
这时,可以看到显示的是
file:///c|/ 《-----这就是绝对路径
比如,我的网页存放在 c;\win98\desktop\myhomepage\ 这个目录里,主页叫index.htm,有一个子目录叫images,用来存放我的图象文件。在 index.htm 文件中出现这样的一句话: <img src="c:\win98\desktop\myhomepage\images\logo.gif" height="32" width="64" >
如果把 myhomepage 这个目录移动到其他驱动器(比如d;),那么这张图肯定会消失的。
为了避免这种情况的发生,我们就必须用相对路径,把上面那句话改成:
<img src="images/logo.gif" height="32" width="64" >
象这样的相对路径就不会出事了。
另外在DW2里建议使用SITES这个功能,也就是说,把你做的页面当成一个站点去管理,在这种情况下,用DW2做的链接就不会出错了。
相对路径的表示方法:(以文件 1.gif 为例)
1.gif (同级目录 1.gif)
images/1.gif (images目录下的 1.gif)
../1.gif (上一级目录下的 1.gif)
../../1.gif (上一级,再上一级目录下的 1.gif)
/images/1.gif (根目录下的images里面的1.gif )

网页开发中的图片命名规则:中文还是英文

           图片命名在本机上可以用中文名,但如果放网上的话,有些空间不支持中文名,所以建议用英文名。
           HTML初学者会经常遇到这样一个问题,如何正确引用一个文件。比如,怎样在一个HTML网页中引用另外一个HTML网页作为超链接(hyperlink)?怎样在一个网页中插入一张图片?......(相关教程:HTML超链接;HTML图片)
           如果在引用文件时(如加入超链接,或者插入图片等),使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等)。
           为了避免这些错误,正确地引用文件,我们需要学习一下HTML路径。
           HTML有2种路径的写法:相对路径和绝对路径。
           HTML相对路径(Relative Path)
           同一个目录的文件引用
           如果源文件和引用文件在同一个目录里,直接写引用文件名即可。
           我们现在建一个源文件info.html,在info.html里要引用index.html文件作为超链接。
           假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
           假设index.html路径是:c:\Inetpub\wwwroot\sites\blabla\index.html
           在info.html加入index.html超链接的代码应该这样写:
           <a href = "index.html">index.html</a>

           如何表示上级目录
           ../表示源文件所在目录的上一级目录,../../表示源文件所在目录的上上级目录,以此类推。

         假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
       假设index.html路径是:c:\Inetpub\wwwroot\sites\index.html
       在info.html加入index.html超链接的代码应该这样写:
       <a href = "../index.html">index.html</a>

       假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
       假设index.html路径是:c:\Inetpub\wwwroot\index.html
       在info.html加入index.html超链接的代码应该这样写:
       <a href = "../../index.html">index.html</a>

       假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
       假设index.html路径是:c:\Inetpub\wwwroot\sites\wowstory\index.html
       在info.html加入index.html超链接的代码应该这样写:
       <a href = "../wowstory/index.html">index.html</a>

       如何表示下级目录
       引用下级目录的文件,直接写下级目录文件的路径即可。
       假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
       假设index.html路径是:c:\Inetpub\wwwroot\sites\blabla\html\index.html
       在info.html加入index.html超链接的代码应该这样写:
         <a href = "html/index.html">index.html</a>

     假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
     假设index.html路径是:c:\Inetpub\wwwroot\sites\blabla\html\tutorials\index.html
     在info.html加入index.html超链接的代码应该这样写:
     <a href = "html/tutorials/index.html">index.html</a>
    
     HTML绝对路径(Absolute Path)
     HTML绝对路径(absolute path)指带域名的文件的完整路径。
     假设你注册了域名www.blabla.cn,并申请了虚拟主机,你的虚拟主机提供商会给你一个目录,
     比如www,这个 www就是你网站的根目录。
     假设你在www根目录下放了一个文件index.html,这个文件的绝对路径就是:
     http://www.blabla.cn/index.html。

       假设你在www根目录下建了一个目录叫html_tutorials,然后在该目录下放了一个文件index.html,这个文件的绝对路径就是http://www.blabla.cn/html_tutorials/index.html。

       关于绝对路径和相对路径的讨论

       绝对路径,通俗的讲就是已经定死的路径,不可能再改变了~就例如你要在C:\a\bb\ccc\index.htm中调用C:\a\bb\k.jpg这张图片,如果你在index.htm中设定的调用路径为绝对路径“C:\a\bb\k.jpg”,那么当运行index.htm的时候它会永远从“C:\a\bb\k.jpg”这个路径去寻找这张图片,不会更改,这样的结果就是一旦你把整个bb文件夹上传到了其它什么地方的话(以F盘为例),这时候index.htm应该位于F:\bb\ccc\index.htm,k.jpg则位于F:\bb\k.jpg,而index.htm在运行的时候仍旧会从C:\a\bb\k.jpg这个路径去寻找这张图片,显然现在不可能再在这个路径下找到图片了,因为图片已经被移走了,这就会导致错误。
       相对路径,通俗的讲就是路径是相对的,是随时可以改变的,就是k.jpg相对于index.htm的路径,如果在编写index.htm的时候调用k.jpg时设定的路径为相对路径“..\k.jpg”,那么不论你把bb文件夹上传到哪里,只要k.jpg在bb文件夹下,index.htm在bb文件夹下的ccc文件夹中,也就是两者相对位置不变,那么index.htm始终能找到k.jpg,因为在bb改变位置的时候,index.htm调用k.jpg所用到的相对路径也在发生改变,例如上面当bb从C:\a移动到F:\的时候,相对路径“..\k.jpg”的改变就相当于把绝对路径“C:\a\bb\k.jpg”改变为“F:\bb\k.jpg”,这样index.htm调用k.jpg的时候就不会出错了。

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

 版权信息©2008-2011 All Rights Reserved 
关于本站|我的web2.0|甘肃社科|技术验证
注册许可证:甘公网安备 62010502000826号

CNZZ: