绝对路径和相对路径

10

在使用任何Web服务器或Tomcat时,绝对路径和相对路径有什么区别?

3个回答

29

绝对路径以 / 开头,指的是从当前站点(或虚拟主机)的根位置开始的路径。

相对路径不以 / 开头,指的是从引用所在文档的实际位置开始的路径。

假设根目录为 http://foo.com/site/,以下是示例:

无论我们在站点上的哪个位置,下面都是绝对路径:

/foo.html

将指向 http://foo.com/site/foo.html

相对路径,假设包含链接位于 http://foo.com/site/part1/bar.html

../part2/quux.html

将引用http://foo.com/site/part2/quux.html

或者

part2/blue.html

将引用http://foo.com/site/part1/part2/blue.html


3
重要的是要注意相对路径也是主观的。
例如:
<?php 
  #bar.php
  require('../foo.php'); 
?>
/dir/bar.php 
/foo.php         # 输出a
/dir/foo.php # 输出b
/dir/other/   # 空文件夹
$ pwd 
>  /
$ php dir/bar.php 
>  / + ../foo.php == /foo.php   
>  输出a
$ cd dir 
$ php bar.php
>  /dir  + ../foo.php = /foo.php 
>  输出a
$ cd other
$ php ../bar.php 
> /dir/other + ../foo.php  = /dir/foo.php 
> 输出b

这可能会导致一些令人困惑的情况,特别是当您有许多带有相对引用和多个可能充当“入口点”的位置时,可以控制相对路径的相对位置。

在这种情况下,应根据已知的固定值手动计算绝对路径,例如:

<?php
    require( realpath(dirname(__FILE__) . '/../foo.php') )

或者
<?php
   require( SOMECONSTANT . '/relative/path.php'  ); 

或者

<?php
   require( $_SERVER['DOCUMENT_ROOT'] . '/relative/path.php' );

1
通过反复试验,我确定了在Tomcat中路径的起始点是webapps文件夹。
换句话说,如果你的Java代码试图读取../somefile.txt,那么该文件的绝对路径将是%TOMCAT_HOME%/webapps/../somefile.txt,即%TOMCAT_HOME%/webapps/somefile.txt。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接