【发布时间】:2011-08-08 11:16:52
【问题描述】:
我正在为 Dreamweaver 编写模板,并且不想更改子文件夹页面的脚本。
有没有办法让路径相对于根目录?
例如:
<link type="text/css" rel="stylesheet" href="**root**/style.css" />
我想要一个默认路径,而不是上面的**root**。有没有办法做这样的事情?
【问题讨论】:
我正在为 Dreamweaver 编写模板,并且不想更改子文件夹页面的脚本。
有没有办法让路径相对于根目录?
例如:
<link type="text/css" rel="stylesheet" href="**root**/style.css" />
我想要一个默认路径,而不是上面的**root**。有没有办法做这样的事情?
【问题讨论】:
只是以斜线开头?这意味着根。只要您在 Web 服务器(例如 localhost)而不是文件系统(例如 C:) 上进行测试,那么您需要做的就是全部。
【讨论】:
要相对于根目录,只需将 URI 以 / 开头
<link type="text/css" rel="stylesheet" href="/style.css" />
<script src="/script.js" type="text/javascript"></script>
【讨论】:
http://example.com/style.css 的样式表和http://example.com/folder/index.html 引用/style.css 的文档,那么它将正常加载。
/ 就可以了。它是相对 URI 的基本特征。
site/folder/ 中,则可以使用HTML <base> 元素,如下面的回答中所述。然后,您无需在每个 URL 前添加 /site/folder/,因为您只需在 <base> 标记的 href 属性中声明一次。
在/之前使用两个句点,例如:
../style.css
【讨论】:
../ 不会为您提供相对于根目录的 URL,但会根据当前文件的目录而变化。
您可以使用ResolveUrl
<link type="text/css" rel="stylesheet" href="<%=Page.ResolveUrl("~/Content/table-sorter.css")%>" />
【讨论】:
/ 表示当前驱动的根目录;
./表示当前目录;
../ 表示当前目录的父目录。
【讨论】:
我推荐使用 HTML <base> element:
<head>
<base href="http://www.example.com/default/">
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
在本例中,样式表位于http://www.example.com/default/style.css,脚本位于http://www.example.com/default/script.js。 <base> 相对于/ 的优势在于它更灵活。您的整个网站可以位于域的子目录中,并且您可以轻松更改网站的默认目录。
【讨论】:
这让我很奇怪。我知道不应该。为了检查我的理解,我想使用家庭关系模型进行比较。假设“你”是当前网页,以下是否正确?
<img src="picture.jpg"> In your folder with you, like a sibling
<img src="images/picture.jpg"> In your child's folder, under you
<img src="../picture.jpg"> In your parent's folder, above you
<img src="/images/picture.jpg"> In your cousin's folder
所以,上至父母,下至兄弟姐妹,下至他们的孩子 = 你的表亲,命名为“图像”。
【讨论】:
作为Alexander Jank mentioned <base href="http://www.example.com/default/"> 很棒。使用子域时,例如default.example.com base 工作得很好,因为 JS 和 CSS 从所述子域加载,default.example.com 和 example.com/default 都可以访问
当使用根路径,而你的JS和CSS文件位于example.com/css或example.com/js时,则子域无权访问,也无法访问子域的根,除非使用base。
【讨论】: