我想知道这两种类型的url之间的区别:相对url(图片,CSS文件,JS文件等)和绝对url。
另外,用哪个比较好呢?
我想知道这两种类型的url之间的区别:相对url(图片,CSS文件,JS文件等)和绝对url。
另外,用哪个比较好呢?
当前回答
假设您有一个网站www.yourserver.example。在web文档的根目录中有一个images子目录,其中有myimage.jpg。
绝对URL定义了文档的确切位置,例如:
http://www.yourserver.example/images/myimage.jpg
相对URL定义了相对于当前目录的位置,例如,假设你在你的图片所在的根目录中:
images/myimage.jpg
(相对于根目录)
你应该尽可能使用相对url。如果你将网站移动到www.anotherserver.com,你将不得不更新所有指向www.yourserver.example的绝对url,相对的url将继续工作。
其他回答
以URL方案和方案特定部分(http://, https://, ftp://,等)开头的URL是绝对URL。
任何其他URL都是相对URL,并且需要一个基本URL,相对URL是从引用所使用的资源的URL中解析出来的(因此依赖于),如果没有声明的话。
请参阅RFC 2396 -附录C中有关解析相对url的示例。
我衷心推荐使用相对url将同一站点的部分指向同一站点的其他部分。
不要忘记,即使在同一个站点中,更改到HTTPS也需要一个绝对URL。
在大多数情况下,相对url是可行的,它们本质上是可移植的,这意味着如果您想提升您的站点并将其放在其他地方,它将立即工作,可能会减少调试时间。
有一篇相当不错的文章是关于绝对url和相对url的,看看吧。
一般来说,使用相对URL被认为是最佳实践,这样你的网站就不会被绑定到当前部署的基础URL。例如,它可以在本地主机上工作,也可以在您的公共域上工作,而无需修改。
我应该使用绝对url还是相对url ?
如果你所说的绝对url指的是包含方案(例如HTTP / HTTPS)和主机名(例如yourdomain.example)的url,不要这样做(对于本地资源),因为维护和调试会很糟糕。
假设您在代码中处处使用绝对URL,如<img src="http://yourdomain.example/images/example.png">。现在,当你要去的时候,会发生什么:
切换到其他方案(例如HTTP -> HTTPS) 切换域名(test.yourdomain. com)。示例-> yourdomain.example)
在第一个例子中,您将收到关于页面上正在请求的不安全内容的警告。因为你所有的url都是硬编码使用http(://yourdomain.example/images/example.png)。当通过HTTPS运行页面时,浏览器期望所有资源都通过HTTPS加载,以防止信息泄露。
在第二个例子中,当你把你的网站从测试环境中上线时,这意味着所有的资源仍然指向你的测试域,而不是你的上线域。
因此,为了回答您关于使用绝对url还是相对url的问题:始终使用相对url(用于本地资源)。
不同的url之间有什么区别?
首先让我们来看看我们可以使用的不同类型的url:
http://yourdomain.example/images/example.png / / yourdomain.example /图片/ example.png /图片/ example.png 图片/ example.png
这些url试图访问服务器上的哪些资源?
在下面的例子中,我假设网站在服务器/var/www/mywebsite上运行
http://yourdomain.example/images/example.png
上面的(绝对)URL试图访问资源/var/www/website/images/example.png。这种类型的URL是你总是想要避免从你自己的网站请求资源的原因如上所述。然而,它确实有它的位置。例如,如果你有一个网站http://yourdomain.example,你想通过HTTPS从外部域请求资源,你应该使用这个。例如,https://externalsite.example/path/to/image.png。
/ / yourdomain.example /图片/ example.png
这个URL是相对的,基于当前使用的方案,当包含外部资源(图像,javascript等)时几乎总是应该使用。
What this type of URL does is use the current scheme of the page it is on. This means that you are on the page http://yourdomain.example and on that page is an image tag <img src="//yourdomain.example/images/example.png"> the URL of the image would resolve in http://yourdomain.example/images/example.png. When you would have been on the page https://yourdomain.example and on that page is an image tag <img src="//yourdomain.example/images/example.png"> the URL of the image would resolve in https://yourdomain.example/images/example.png.
这可以防止在不需要时通过HTTPS加载资源,并自动确保在需要时通过HTTPS请求资源。
上面的URL在服务器端的解析方式与前面的URL相同:
上面的(绝对)URL试图访问资源/var/www/website/images/example.png。
/图片/ example.png
对于本地资源,这是首选的引用方式。这是一个基于你网站的文档根目录(/var/www/mywebsite)的相对URL。这意味着当你有<img src="/images/example.png">时,它总是会解析为/var/www/mywebsite/images/example.png。
如果在某个时候你决定切换域,它仍然可以工作,因为它是相对的。
图片/ example.png
这也是一个相对URL,尽管与前一个略有不同。这个URL相对于当前路径。这意味着它将解析到不同的路径,这取决于您在站点中的位置。
例如,当你在http://yourdomain.example页面上,你使用<img src="images/example.png">时,它会在服务器上解析为/var/www/mywebsite/images/example.png,然而,当你在http://yourdomain.example/some/path页面上,你使用完全相同的图像标记时,它会突然解析为/var/www/mywebsite/ somepath /images/example.png。
什么时候用什么?
在请求外部资源时,您很可能希望使用相对于方案的URL(除非您希望强制使用不同的方案),而在处理本地资源时,您希望使用基于文档根的相对URL。
文档示例:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link href='//fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700' rel='stylesheet' type='text/css'>
<link href="/style/style.css" rel="stylesheet" type="text/css" media="screen"></style>
</head>
<body>
<img src="/images/some/localimage.png" alt="">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
</body>
</html>
有些(有点)复制品
编写跨环境传输url的安全方法 在网站中链接图片的正确方法是什么?