1
166
一般来说,使用相对URL被认为是最佳实践,这样您的网站就不会绑定到当前部署它的基本URL。例如,它可以在本地主机以及您的公共域上工作,而无需修改。 |
2
189
我应该使用绝对或相对URL吗?如果绝对URL是指包含方案(例如http/https)和主机名(例如yourdomain.com)的URL,则永远不会这样做(对于本地资源),因为维护和调试会很糟糕。
假设您在代码中的任何地方都使用了绝对URL,比如
在第一个示例中,将发生的情况是,您将收到有关页上请求的不安全内容的警告。因为所有的URL都是硬编码以使用http(://yourdomain.com/images/example.png)。当通过HTTP运行页面时,浏览器希望通过HTTPS加载所有资源,以防止信息泄漏。 在第二个示例中,当将站点从测试环境中激活时,意味着所有资源仍指向测试域而不是活动域。 因此,要回答您关于是否使用绝对或相对URL的问题:始终使用相对URL(对于本地资源)。 不同的URL有什么区别?首先,让我们看看我们可以使用哪些不同的URL:
这些URL尝试在服务器上访问哪些资源?
在下面的示例中,我假设网站是从服务器上的以下位置运行的
上述(绝对)URL尝试访问资源
此URL是基于当前使用的方案的相对URL,在包含外部资源(图像、javascripts等)时几乎应始终使用。
这种类型的URL所做的是使用其所在页面的当前方案。这意味着你在页面上
这将防止在不需要时通过HTTPS加载资源,并在不需要时自动确保通过HTTPS请求资源 是 需要。 上述URL在服务器端的解析方式与前一个URL相同:
对于本地资源,这是引用它们的首选方式。这是基于文档根目录的相对URL(
如果在某个时候您决定切换域,它仍然可以工作,因为它是相对的。
这也是一个相对的URL,尽管与前一个稍有不同。此URL相对于当前路径。这意味着它将根据您在站点中的位置解析为不同的路径。
例如,当您在页面上时
什么时候用什么?在请求外部资源时,您很可能希望使用与方案相关的URL(除非您希望强制使用其他方案),在处理本地资源时,您希望使用基于文档根的相对URL。 示例文档:
一些(有点)复制品 |
3
57
看到这个: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
绝对URL包括“路径”部分之前的部分——换句话说,它包括方案(即
相对URL以路径开头。 绝对URL是绝对的:资源的位置只能通过查看URL本身来解析。相对URL在某种意义上是不完整的:要解决它,您需要方案和主机名,这些通常是从当前上下文中获取的。例如,在网页中
你可以放一个这样的链接
在
因此,这些的模式、主机名和前导路径被采用并预先准备到
如果链接是:
(注意
因为领导
在Web应用程序中,我建议对属于您的应用程序的所有资源使用相对URL。这样,如果您更改页面的位置,一切都将继续工作。任何外部资源(可能是完全在应用程序外部的页面,也可能是通过内容交付网络交付的静态内容)都应该始终指向使用绝对URL的位置:如果不使用绝对URL,则根本无法找到它们,因为它们驻留在不同的服务器上。 |
4
34
假设我们正在创建其文件在文件夹中的子网站 http://site.ru/shop . 1。绝对网址
2。相对URL
虽然相对URL看起来比绝对URL短,但绝对URL更可取,因为链接可以在网站的任何页面上不变地使用。 中间案件我们考虑了两种极端情况:“绝对”绝对和“绝对”相对URL。但在这个世界上一切都是相对的。这也适用于URL。每次提到绝对URL时,都应该指定相对于什么。 三。协议相关URL
谷歌推荐这样的网址。然而,现在人们普遍认为http://和https://是不同的站点。 4。根相对URL即相对于域的根文件夹。
如果所有页面都在同一个域中,这是一个不错的选择。当您将站点移动到另一个域时,不必在URL中大量替换域名。 5。基本相对URL(主页相对)标记<base>指定基本URL,该URL将自动添加到所有相关链接和锚定。基标记不影响绝对链接。作为基本URL,我们将指定主页:<base href=“http://sites.ru/shop/”>。
现在,您不仅可以将站点移动到任何域,还可以移动到任何子文件夹中。请记住,虽然URL看起来像相对的,但实际上它们是绝对的。 尤其要注意锚。要在当前页面中导航,我们必须编写href=“t-shirts/t-shirt-life-is-good/comments”而不是href=“comments”。后者将出现在主页上。 结论对于内部链接,我使用基本相对URL(5)。对于外部链接和新闻稿,我使用绝对URL(1)。 |
5
23
实际上有三种类型应该明确讨论。在实践中,虽然URL被抽象为在较低的级别上处理,但我想说的是,开发人员可以在整个生命周期中不需要手工编写一个URL。 绝对的绝对URL将您的代码绑定到协议和域。这可以通过动态URL来解决。
绝对优点:
根相关根相对URL将代码绑定到基URL。这可以通过动态URL和/或 base tags .
根相对优势:
相对相对URL将代码绑定到目录结构。没有办法克服这一点。相对URL只在文件系统中用于遍历目录或作为半月板任务的快捷方式。
相对缺点:
路线的演变在这里讨论的意义上,开发人员已经停止编写URL。所有请求都是一个网站的索引文件,包含一个查询字符串,也就是路由。路由可以被认为是一个迷你URL,它告诉应用程序要生成的内容。
路线优势:
我的拿来大多数人都会在他们的项目中以某种方式使用这三种形式。关键是要理解它们,并选择最适合任务的一个。 |
6
6
如果它是在您的网站中使用的,最好使用相对URL,例如,如果您需要将网站移动到另一个域名或只在本地调试,您可以这样做。 看看stackoverflow在做什么(在firefox中是ctrl+u):
在某些情况下,它们使用绝对URL:
……但这只是提高速度的最佳做法。在你的情况下,这看起来不像你在做那样的事情,所以我不会担心。 |
7
6
我将不得不反对这里的大多数人。 我认为相对的URL方案是“很好的”,当你想要快速的启动和运行一些东西,而不是在框外思考,特别是如果你的项目很小,开发人员很少(或者只是你自己)。 然而,一旦你开始研究大的、胖的系统,在那里你一直在交换域和协议,我相信一个更优雅的方法是正确的。 当您在本质上比较绝对和相对URL时,绝对会获胜。为什么?因为它永远不会破碎。曾经。绝对URL就是它所说的。关键是你必须维护你的绝对网址。 绝对URL链接的弱方法实际上是对整个URL进行硬编码。这不是一个好主意,也可能是人们为什么认为他们危险/邪恶/烦人的罪魁祸首。更好的方法是编写一个易于使用的URL生成器。这些很容易写,可以 难以置信地 功能强大-自动检测您的协议,易于配置(字面上为整个应用程序设置一次URL),等等,它注入您的域全部自己。这方面的好处是:您继续使用相对的URL进行编码,并且在运行时,应用程序将您的URL作为完全绝对值即时插入。令人惊叹的。 考虑到几乎所有现代站点都使用某种动态后端,这样做对所述站点最有利。绝对URL不仅仅能让你确定它们指向哪里——它们还能提高SEO性能。 我可能会补充说,绝对URL会以某种方式改变页面的加载时间的说法是一个神话。如果你的域名超过几个字节,而你在20世纪80年代使用的是拨号调制解调器,那当然。但情况已经不是这样了。 https://stackoverflow.com/ 是25字节,而他们用于站点导航区域的“topbar sprite.png”文件的重量为9+kb。这意味着与sprite文件相比,附加的url数据是加载数据的.2%,而且该文件甚至不被认为是一个大的性能冲击。 那个大的,未优化的,全页的背景图像更可能减慢你的加载时间。 下面是一篇关于为什么不应该使用相对URL的有趣文章: http://yoast.com/relative-urls-issues/ 例如,一个可能出现在亲属身上的问题是,有时服务器映射(请注意大型的、混乱的项目)与文件名不一致,开发人员可能会假设一个相对的URL不是真的。我今天在一个项目上看到了这一点,它把整个页面都放下了。 或者可能是开发人员忘记了切换指针,突然谷歌为您的整个测试环境建立了索引。whoops-重复内容(对seo不好!). 绝对的可能是危险的,但如果使用得当,并且 不能破坏你的身材 它们被证明更可靠。请看上面的文章,它给出了WordPressURL生成器超级棒的原因。 :) |
8
5
在大多数情况下,相对的URL是可行的,它们本质上是可移植的,这意味着如果你想提升你的站点,并把它放在其他人可以立即工作的地方,可能会减少调试时间。 有一个相当体面的 article on absolute vs relative URLs 检查一下。 |
9
4
以URL方案和方案特定部分开头的URL(
任何其他URL都是相对URL,需要一个基本URL,相对URL是从该URL解析出来的(因此取决于该URL),如果未另行声明,则该URL是引用所使用的资源的URL。 看一看 RFC 2396 â Appendix C 有关解析相对URL的示例。 |
10
3
假设你有一个网站www.yourserver.com。在Web文档的根目录中,您有一个images子目录,在该目录中,您有myimage.jpg。 绝对URL定义文档的确切位置,例如:
相对URL定义位置 相对于当前目录 例如,如果您位于根Web目录中,则图像位于:
(相对于根目录) 在可能的情况下,应该始终使用相对URL。如果您将站点移动到www.anotherserver.com,您必须更新所有指向www.yourserver.com的绝对URL,相对URL将继续工作。 |
11
0
对于每个支持相对URI解析的系统,相对和绝对URI都有相同的目标:引用。它们可以互换使用。所以你可以决定 每个 情况不同。从技术上讲,他们提供了 相同的 引用。 准确地说,每个相对的URI都已经有了一个绝对的URI。这就是解析相对URI所依据的基URI。所以相对URI实际上是绝对URI之上的一个特性。 这也是为什么相对URI可以做到的原因。 更多 与绝对URI一样,这对于静态网站尤其重要,否则,与绝对URI相比,静态网站无法灵活地进行维护。 这些相对URI解析的积极作用也可以用于动态Web应用程序开发。在动态环境中,绝对uri s引入的不灵活也更容易处理,因此对于一些不确定uri解析以及如何正确地实现和管理它的开发人员(并非总是那么容易)来说,经常选择在网站的动态部分使用绝对uri s,因为它们可以引入其他动态特性。(例如,包含URI前缀的配置变量)以解决不灵活的问题。 那么使用绝对URI有什么好处呢?技术上没有,但我想说的是:相对URI更复杂,因为它们需要根据所谓的绝对基URI进行解析。即使解析是多年来严格定义的,您也可能在URI解析中遇到错误的客户机上运行。由于绝对URI不需要任何解析,因此使用绝对URI不会有遇到具有相对URI解析的错误客户端行为的风险。那么,实际风险有多高?嗯,这很罕见。我只知道一个互联网浏览器的相对URI解析有问题。这不是一般情况,只是在一个非常(模糊)的情况下。 除了HTTP客户机(浏览器)之外,对于超文本文档或代码的作者来说,它可能更复杂。在这里,绝对URI的好处是更容易测试,因为您可以在浏览器地址栏中按原样输入它。但是,如果不仅仅是一个小时的工作,那么实际理解绝对和相对的URI处理通常对您更有好处,这样您就可以真正地利用相对链接的好处。 |
12
-5
我衷心推荐将同一站点的位指向同一站点的其他位的相对URL。 别忘了,对https的更改——即使在同一个站点——也需要绝对的URL。 |
errerr · htaccess重写引擎URL解释 6 年前 |
user1 · 我的htaccess出现500错误 6 年前 |
aBlaze · 如何导航到包含\u的URL? 6 年前 |
gtershel · Laravel Url两级深 6 年前 |
MarcoLe · Angular 5-路由更改url但不导航 6 年前 |