HTML中的绝对与相对路径

时间:2011-06-25 15:59:10

标签: html apache

我从我的网络服务器上的子目录提供内容,例如:

http://www.myserver.com/subtree

我注意到CSS没有正确呈现,所以我看一下HTML文件的来源:

<link rel="stylesheet" type="text/css" href="static/stylesheets/style.css"/>

可以预期,Chrome或Firefox等浏览器会尝试在

中找到此css
http://www.myserver.com/subtree/static/stylesheets/style.css

当鼠标悬停在链接上时,我可以看到它将我链接到

http://www.myserver.com/static/stylesheets/style.css

请注意,我正在使用apache的mod_proxy从本地计算机上运行的另一台服务器上的/ subtree中提供内容。但是,我的理由是浏览器不知道这个,看起来内容来自myserver.com/subtree,因此它应该使用相对路径查找资源。

我错过了什么?

3 个答案:

答案 0 :(得分:1)

这是可以预料的。浏览器无法知道/ subtree是一个文件夹(相反,它也可能只是一个文件/文本/ html)。如果您希望浏览器在相对路径查找中包含此路径片段,请确保它以斜杠结尾,如:

http://www.myserver.com/subtree/

如果您使用的是Apache,可以使用mod_dir的DirectorySlash指令自动为您解决此问题:mod_dir documentation

答案 1 :(得分:1)

我希望这有帮助:

浏览器在看到以/开头的网址时,会移除path的{​​{1}}部分,或者获取document.location.href的值,并将当前网址附加到结束了。

当他们看到不以“/”开头的网址时,他们会将当前网址追加到document.location.origin的末尾。

答案 2 :(得分:1)

Sam Dufel对此问题的评论:

  

我注意到友好的网址,   浏览器通常会查看   不同的相对路径取决于   是否包含尾随   削减。即,   http://www.myserver.com/subtree会   有一个相对根   http://www.myserver.com/,和   http://www.myserver.com/subtree/会   有一个相对根   http://www.myserver.com/subtree/

(这里你可以将这个问题标记为已回答)