相对路径的问题

问题描述

有一个网页,http://www.c-seed.cn/breed/index.php?&pagenum=1里面有两种连接:1<a href="/news/index.php?sortid=2" class="nav">新闻播报</a>它的绝对路径是http://www.c-seed.cn/news/index.php?sortid=22<a href="show.php?breedId=249" target="_blank">它的绝对路径是http://www.c-seed.cn/breed/show.php?breedId=249为什么两个连接的根目录是不同的,同一个网页可以有不同的根目录吗?

解决方案

1, 以"/"开头说明是相对于你的整个应用的根目录, 也就是"http://www.c-seed.cn"2, 不以"/"开头说明是相对于当前的url路径.你的当前url是"http://www.c-seed.cn/breed/index.php", 当前的目录就是"http://www.c-seed.cn/breed", 所以合起来就是"http://www.c-seed.cn/breed/show.php", 和文件系统的差不多!不知道我说明白了没有!
解决方案二:
小疯子已经说的差不多了,关于PHP中的文件的路径问题,我补充一篇文摘:“引言:关于PERL与PHP中的包含路径一直是一个比较难解的问题,主要是与操作系统和WEB服务器有关,不可能非常智能化的解决这个路径问题。相对于PERL,PHP的路径好得多,解决起来也容易得多,因为PHP的相对路径在PHP程序中的任何场合都可以使用,而不象PERL在某些语句中必须用绝对路径而导致移植的极其复杂。基于此,在PHP中,我设计了一个绝对稳妥的解决方案,如下所述。原则:使用相对路径,但在相对路径中用绝对路径(有点绕,待会儿详解),一是可以保证可移植性,二是可以方便地修改,三是公式化且结构清晰明了,易于扩展。步骤详解:1、先确定好一个程序的根目录,注意是文件系统下的,不是WEB服务器下的虚拟目录,不过一般情况下该目录下的子目录的相对路径与URL下该目录的虚拟子目录是相同的。2、在定义好的程序根目录下的每个子目录下(其实不一定是每个,根据需要)建立一个settings.php,里面定义一个变量或是常数(常数比较好,因为作用域比较大),如APPROOT,但这个APPROOT却不是绝对路径,而是该目录相对于你指定的程序根目录的相对路径。3、在此目录下的所有程序入口文件(也即第一个包含其它文件的文件,或是允许直接在浏览器中浏览的文件)中第一句写上require_once('settings.php');,但要注意,所有被包含文件最好不要加此句——其实加上也可以,因为你可以在settings.php中写上 if(!defined(APPROOT)) define(APPROOT, '../..');这类的语句以防重定义。4、如果你要包含其它文件,无论是直接还是间接地包含,都可以写成 include(APPROOT.$path);,这里$path为被包含文件相对于你所指定的程序根目录的绝对路径。原理:定下的程序根目录是相对路径,但具体的目录位置是相对于那个根目录的绝对路径,两者组合起来就是具体文件相对于程序根目录的相对路径了。例如目录c:wwwrootapp为你指定的程序根目录,然后有这么两个文件c:wwwrootappaindex.php和c:wwwrootappbinc.php。对子目录a来说,APPROOT是'..',而对程序根目录来说,inc.php的绝对路径是$path='/b/inc.php',两者组合为'../b/inc.php'。如果要在index.php中包含inc.php就要写成include('../b/inc.php');,而这个路径不就正好是刚才组合而成的APPROOT.$path吗?结论:经过以上处理,各个路径绝对整齐划一,唯一罗嗦一点的就是每个目录下要定义一下这个APPROOT,但每个目录下只需在本目录的settings.php中定义一次就足够了。如果你整个程序只有一个入口文件,如index.php,而其它文件全部都是直接或是间接地被包含进这个唯一的入口文件的话,就只需在index.php的所在目录下的settings.php中定义一次就OK了。如果有朋友做过Delphi的工程并对工程文件研究过的话,就会发现我刚才说的一个程序只有一个主入口文件的情况与Delphi的工程十分相似,因为Delphi除了一个主程序文件(dpr文件),其余的全部是单元文件或是资源文件,都不能独立执行。在PHP中,如果这种情况出现,只需定义一次APPROOT,并在主程序文件中第一句话写成require_once('settings.php');,而以后所有的包含全都可以用include(APPROOT.$path);,就保证不会有任何问题,除非你不会写这个“包含文件相对于程序根目录的绝对路径”$path。”原文连接:http://bbs.chinaunix.net/viewthread.php?tid=221927

时间: 2024-09-20 15:30:29

相对路径的问题的相关文章

利用PS画笔及描边路径制作金色树叶字

树叶子制作思路非常简单,用设置好的画笔描边文字路径即可. 不过操作的时候还需要一些优化,首先描边路径需要多建几个图层,分别描上不同设置的画笔,然后给每层叶子适当添加样式或调色,来增加叶子的层次感. 教程最终效果 1.新建1125*864px大小的文档,将素材拉入画布中,摆放好位置.     2.给图层设置图层样式颜色叠加,模式正片底叠,颜色#572306. 3.再新建500*500px大小的文档,编辑--预设管理器--画笔,载入叶子画笔(点这里下载),设置画笔如下. 4.新建图层,画出一片叶子.

php从完整文件路径中分离文件目录和文件名的方法

 这篇文章主要介绍了php从完整文件路径中分离文件目录和文件名的方法,涉及php中basename及dirname函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php从完整文件路径中分离文件目录和文件名的方法.分享给大家供大家参考.具体分析如下: basename()函数用于从路径中获得文件名 dirname()函数用于从路径中获得文件目录 ? 1 2 3 4 5 <?php $full_name = 'c:wampphpphp.ini'; $base = b

实现php上传图片到指定位置路径保存到数据库

 本文为大家介绍下php上传图片到指定位置路径保存到数据库的具体实现,感兴趣的朋友不要错过 1.conn.php  代码如下: <?  $host="localhost"; //数据库服务器名称  $user="root"; //用户名  $pwd="1721"; //密码  $conn=mysql_connect($host,$user,$pwd);  mysql_query("SET  character_set_connec

注册表 应用程序路径-注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~!

问题描述 注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~! 10C C币快没有了,希望大神看到不要嫌弃赏金!!!!!!不吝赐教.... 解决方案 HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentversionuninstall软件名,如果有,一般在这个里面 解决方案二: 你能找到某个软件的注册表 逐个点开 后面 '数据'那一列里面会有路径显示 解决方案三: 一个操作注册表的类 解决方案四: 操作?还是程序控

vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

问题描述 vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

Android Studio中SDK Location没有了,不能设置sdk的路径

问题描述 Android Studio中SDK Location没有了,不能设置sdk的路径 今天脑子迷迷糊糊的,不知道点了什么东西,自己项目就出问题,然后自己重新重新配置sdk路径也找不到,将IDE卸载重新安装还是老样子,真的很蛋疼. 求求大家们帮帮我,谢谢大家了! 解决方案 Android Studio 怎么设置JDK和SDK的路径Android studio 没有SDK location设置选项Android Studio设置代理更新下载SDK

lucene 搜索-lucene对文件名、文件路径进行索引,搜索的时候不能检索出来

问题描述 lucene对文件名.文件路径进行索引,搜索的时候不能检索出来 如题,lucene对文件名.文件路径都进行了索引,因为文件名.文件路径都包含特殊字符斜杠(/)和点(.),导致搜索的时候输入文件名或者路径,都无法搜索,使用/对字符进行转义也不行,请帮忙. 部分代码如下: protected Document getDocument(File f) throws IOException { Document doc = new Document(); doc.add(new Field("

SQL相关路径查询脚本

--1.查询机器名 SELECT @@servername AS 机器名称 --查询已安装的SQL实例名 SELECT * FROM Sys.Servers --2.查询SQL安装路径 DECLARE @installPath VARCHAR(200) EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\MSSQLSERVER\setup', 'SQLPath', @installPath OUTPUT SET

android华为手机读取本地文件夹图片获取path路径null,求指导

问题描述 android华为手机读取本地文件夹图片获取path路径null,求指导 android华为手机读取本地文件夹图片获取path路径null,求指导 解决方案 public String getImagePathFromURI(Uri uri) { Cursor cursor = getActivity().getContentResolver().query(uri null null null null); String path = null; if (cursor != null

解决图片路径中含有中文在jsp下不能正常显示问题

图片路径正确,放到一个单独的html页面中也能正常打开,在jsp中就是不显示图片,下面有个不错的解决方法,大家可以尝试下 如:<img src="/pic/lupload/img工行上传.jpg" />,图片路径正确,放到一个单独的html页面中也能正常打开,在jsp中就是不显示图片    原因在于没有在tomcat配置URIEncoding.修改方法:    在tomcat的server.xml中加入URIEncoding="utf-8"(网页的编码是