[这个问题与this question有些相关,但答案不是......]
我一直在 HTML 和脚本语言 (PHP/ASP/JSP) 中使用相对路径来引用所有内容。我认为理由与“如果网站托管在某个奇怪的子目录中怎么办”有关。但是我的同事已经开始将绝对路径放入我们正在开发的 PHP 站点中。起初我很震惊,但后来我想,“为什么不呢?我们永远不会被托管在子目录中。” 如今,在根目录中托管已不是罕见的必需品。是否仍然需要使用相对路径“编码”(实际上是标记)?我认为现在这可能是一种过时的做法。
[这个问题与this question有些相关,但答案不是......]
我一直在 HTML 和脚本语言 (PHP/ASP/JSP) 中使用相对路径来引用所有内容。我认为理由与“如果网站托管在某个奇怪的子目录中怎么办”有关。但是我的同事已经开始将绝对路径放入我们正在开发的 PHP 站点中。起初我很震惊,但后来我想,“为什么不呢?我们永远不会被托管在子目录中。” 如今,在根目录中托管已不是罕见的必需品。是否仍然需要使用相对路径“编码”(实际上是标记)?我认为现在这可能是一种过时的做法。
确实。你永远不知道你的代码最终会在哪里结束,或者出于什么目的。
假设您构建了一个新版本的站点,但为了帮助您的用户过渡,您将旧版本移动到“/classic”子目录。同样的情况经常发生在网站将在“/new”目录中托管新重新设计的测试版的地方。
第一次正确构建它不应该是一件麻烦事,总有一天你会感谢自己。
好吧,这可能不是世界末日,但它正在建立一个你不需要的依赖项。
例如,如果您想在测试工具的子目录中放置多个版本,或者子目录有助于解决其他问题(例如将其与坚持位于根目录中的其他应用程序结合使用),您可能会找到它更难。
当然,您可能总是可以通过其他方式解决它 - 但问题是您现在必须这样做。
如果您使用动态生成的页面,请动态生成您的 URL。例如,对于 JSTL,使用 <c:url>。这不仅允许您在将来移动页面,还可以确保您的 URL 将被正确转义(说实话:您多久使用 & 构建查询字符串?如果您希望 W3C 验证器接受它们,你需要)。
对于我的个人网站,它使用 PHP 来构建页面,我创建了几个方法:insertPageRef()、insertCodeRef() 等等,它们可以创建有效的 HREF。因此,随着网站结构的发展,我会毫不犹豫地重新安排我的网站结构。
我会说,被移动到子目录的情况相当不寻常。更常见的是托管在不同的服务器上:您在“dev.yourcompany.com”上创建您的测试站点,然后通过将其移动到“www.yourcompany.com”来上线。在这种情况下,出于显而易见的原因,您需要使用相对链接。
编辑:删除了我的开头段落,因为它是基于对引用文章的错误解释。
我总是使用绝对路径,原因如下:
包含: 1. 当您使用模板系统时,您永远不知道文档在调用包含时将具有的目录结构。2. 如果要移动文档,您可以很确定它将是文档本身而不是包含。如果是包括在内,那么他们正在被我知道发生了什么的人所感动。除此之外,如果有人不熟悉绝对/相对路径,他们会比相对更了解绝对。
css:(以及上面的项目) 1. 使用 Web Developer 编辑时,当您的样式表与 doc 不在同一目录中时,相关背景会消失。2. 根据规范,当您将某些内容放到“网络”上时,它应该会一直存在。当我构建新的东西时,我会在一个新文件夹中构建它,或者使用一个新文件名来构建它,而不要理会所有旧文档。