ste*_*ail 48 html relative-path hyperlink
我检查了朋友一些代码,并发现谁建他的网站开发者开始每一个相对的src,href和include以正斜杠/.
例如:
src="/assets/js/jquery.js"
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个.所以我的问题是,为什么开发人员会/在相对路径的开头放置正斜杠?
Ode*_*ded 69
这样做是为了根路径(使其成为绝对路径).
它确保路径不是相对的,而是从站点的根目录读取.
这允许人们移动文件而不必更改指向不同资源的链接.
使用你的例子:
src="/assets/js/jquery.js"
Run Code Online (Sandbox Code Playgroud)
如果引用文件位于/pages/admin/main.html(例如)使用相对路径,您将使用:
src="../../assets/js/jquery.js"
Run Code Online (Sandbox Code Playgroud)
假设您将文件移动到子目录.使用原始根路径不需要进行任何更改,但相对的路径需要更改为:
src="../../../assets/js/jquery.js"
Run Code Online (Sandbox Code Playgroud)
Ble*_*der 30
添加@Oded的答案,斜杠使URL绝对.
例如:
/foo/bar/baz.css
Run Code Online (Sandbox Code Playgroud)
这意味着:
http://www.example.com/foo/bar/baz.css
Run Code Online (Sandbox Code Playgroud)
但没有斜线,事情会变得有点不同:
foo/bar/baz.css
Run Code Online (Sandbox Code Playgroud)
这告诉浏览器查看目录的当前文件夹(不是根文件夹)foo,然后查看后续目录和文件.
另外,例如这个HTML:
<script type="text/javascript" src="foo.js"></script>
Run Code Online (Sandbox Code Playgroud)
如果将HTML文件移动到另一个文件夹,则不会加载脚本,因为foo.js没有使用HTML文件移动脚本.
但是如果你使用绝对URL:
<script type="text/javascript" src="/foo.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后JS文件加载EXACTLY从http://www.example.com/foo.js无论身在何处的HTML文件.
这是为了确保资产来自Web服务器的"根".
例如,主机是www.example.com网址变为 www.example.com/assets/js/jquery.js
我通过项目执行此操作,我希望确保在自己的虚拟主机上实时运行.
问题实际上归结为这些资产被纳入的地方.例如,如果资产是从/ help/pages/faq中包含的,那么当站点托管在不变的主机(例如example.com)上时,开发人员可以确保路径能够正常工作.
使用相对路径'assets/js/jquery.js'的问题是,如果资产包含在/ help/pages/faqs中,则路径相对于该起点,例如/ help/pages/faqs/assets /js/jquery.js
希望有所帮助