问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

URL重定向

发布网友 发布时间:2022-09-27 05:05

我来回答

1个回答

热心网友 时间:2023-10-08 17:44

URL 重定向是一种当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。

重定向原理

在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载。大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。

下面是HTTP重定向的工作过程

在a中,Alice向www.joes-hardware.com发送了一条请求

GET /hammers.html HTTP/1.0

Host: www.joes-hardware.com

User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)

  在b中,服务器没有回送带有HTTP状态码200的Web页面主体,而是回送了一个带有HTTP状态码302的重定向报文(Location指明了新的访问地址)

HTTP/1.0 302 Redirect

Server: Stronghold/2.4.2 Apache/1.3.6

Location: http://161.58.228.45/hammers.html

  现在,在c中,浏览器会用重定向URL重新发送请求,这次会发送给主机161.58.228.45。

GET /hammers.html HTTP/1.0

Host: 161.58.228.45

User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)

重定向映射可以划分为三个类别:永久重定向、临时重定向和特殊重定向。永久性重定向操作是永久性的。它表示原 URL 不应再被使用,而应该优先选用新的 URL。搜索引擎机器人会在遇到该状态码时触发更新操作,在其索引库中修改与该资源相关的 URL ,这种情景服务器的返回状态码为301 moved permanently。有时候请求的资源无法从其标准地址访问,但是却可以从另外的地方访问。在这种情况下可以使用临时重定向。搜索引擎不会记录该新的、临时的链接,这种情景服务器返回的状态码为302 Found。还有一种特殊的重定向,服务器返回304 not modified,告诉客户端资源未被修改,可以使用本地缓存的资源。

重定向机制的实现

重定向的实现有3种方式,

第一种,即HTTP 协议中重定向机制是应该优先采用的创建重定向映射的方式,这需要Web 开发者对于服务器有控制权,或能对其进行配置。如在apache下重定向映射可以在服务器的配置文件中设置。mod_alias 模块提供了 Redirect 和 Redirect_Match 两种指令来设置 302 响应(默认值):

<VirtualHost *:80>

ServerName example.com

Redirect / http://www.example.com

</VirtualHost>

URL http://example.com/ 会被重定向至 http://www.example.com/。

第二种是HTML重定向机制,Web 开发者可以在精心制作的 HTML 页面的 <head>  部分添加一个 <meta> 元素,并将其 http-equiv 属性的值设置为 refresh 。当显示页面的时候,浏览器会检测该元素,然后跳转到指定的页面。

<head>

  <meta http-equiv="refresh" content="0;URL=http://www.example.com/" />

</head>

content 属性的值开头是一个数字,指示浏览器在等待该数字表示的秒数之后再进行跳转。建议始终将其设置为 0 来获取更好的可访问性。该方法仅适用于 HTML 页面(或类似的页面),然而并不能应用于图片或者其他类型的内容。

在 JavaScript 中,重定向机制的原理是设置 window.location 的属性值,然后加载新的页面。

window.location = "http://www.example.com/";

与 HTML 重定向机制类似,这种方式并不适用于所有类型的资源,并且显然只有在支持 JavaScript 的客户端上才能使用。另外一方面,它也提供了更多的可能性,比如在只有满足了特定的条件的情况下才可以触发重定向机制的场景。

应用场景

HTTP重定向可以在服务器间导引请求,但它有以下几个缺点:需要原始服务器进行大量处理来判断要重定向到哪台服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样;增加了用户时延,因为访问页面时要进行两次往返;如果重定向服务器出故障,站点就会瘫痪。

常见的应用场景有,

有些Web站点会将HTTP重定向作为一种简单的负载均衡形式来使用。处理重定向的服务器(重定向服务器)找到可用的负载最小的内容服务器,并将浏览器重定向到那台服务器上去。

域名别称,理想情况下,一项资源只有一个访问位置,也就是只有一个 URL 。但是由于种种原因,需要为资源设定不同的名称(即不同的域名,例如带有和不带有 www 前缀的URL,以及简短易记的 URL 等)。在这种情况下,实用的方法是将其重定向到那个实际的(标准的)URL,而不是复制资源。

在以下几种情况下可以使用域名别称:

扩大站点的用户覆盖面。一个常见的场景是,假如站点位于  www.example.com  域名下,那么通过  example.com 也应该可以访问到。这种情况下,可以建立从 example.com 的页面到  www.example.com 的重定向映射。此外还可以提供常见的同义词,或者该域名容易导致的拼写错误的域名别称。

迁移到另外一个域名。例如,公司改名后,你希望用户在搜索旧名称的时候,依然可以访问到应用了新名称的站点。

强制使用 HTTPS 协议。对于 HTTP 版本站点的请求会被重定向至采用了 HTTPS 协议的版本。如

保持链接有效,当你重构 Web 站点的时候,资源的 URL 会发生改变。即便是你可以更新站点内部的链接来适应新的命名体系,但无法控制被外部资源使用的 URL 。你并不想因此而使旧链接失效,因为它们会为你带来宝贵的用户(并且帮助优化你的SEO),所以需要建立从旧链接到新链接的重定向映射。

不安全请求的临时响应,不安全( Unsafe )请求会修改服务器端的状态,应该避免用户无意的重复操作。一般地,你并不想要你的用户重复发送   PUT 、 POST  或  DELETE  请求。假如你仅仅为该类请求返回响应的话,简单地点击刷新按钮就会(可能会有一个确认信息)导致请求的重复发送。在这种情况下,服务器可以返回一个  303  (See Other) 响应,其中含有合适的响应信息,或处理成功后 redirect 到另一个 jsp/php页面。即如果刷新按钮被点击的话,只会导致该页面被刷新,而不会重复提交不安全的请求。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样喷香水留香更持久?有哪些技巧? 有哪些方法让香水持久度更长一些? 怎样喷香水比较持久? 如何喷香水能使味道更持久? 败北是什么梗 湖南第一师范学院生活开销 赣州博沃新能源科技有限公司怎么样? 在湖南第一师范学院读书需要支出哪些费用 江西信丰恒隆麦饭石酒业有限公司公司荣誉 信丰县资源特点 怎么治疗 宿醉啊 ? 骸骨骨折康复应该吃哪些东西? 韩国电影&lt;&lt;宿命&gt;&gt;里的女主角叫什么名字啊?演过什么? 穿越为萨拉查斯莱特林的小说 怎么才能让冰不容易化 把一块冰带到学校中,做实验用,为了尽量保证冰不融化,请举出3种方法,谢谢亲哦 vivo x5max手机怎么用蓝牙分享qq 如何制作简单的鸡尾酒或饮料 怎么煮米饭 煮米饭的方法 午餐肉饭团的家常做法 午餐肉饭团做法 去酒吧不喝酒就是坐在那里也会头晕有醉酒的感觉是怎么回事 有不喝酒也会有醉了的感觉吗 煮饭洗菜要用什么水 喝酒如何达到似醉非醉,人醉心不醉,心醉意不醉的境界? 怎么煅炼酒量,本人不会喝啤酒,喝一杯就有醉意,喝时就感觉那气味就有点恶心 请问如何才能做到心醉意不醉? 简单粘土的做法有哪些? 法餐烹饪小知识 —— 清澈美味的无水黄油 想要制作一种非常好吃的罐头蘑菇,用泡的方法,调好汁把蘑菇放入罐头中一两天就可以吃的那种蘑菇。口味一 墨西哥玉米片用什么吃 如何连接路径的URL时,URL重定向 如何将无效的URL重定向到其他页面 如何获取重定向url .NET如何实现URL重定向(百度谷歌收录问题) 1515 英语怎么说 蓬松磅蛋糕做法怎么做 宿命里莞的扮演者是谁? 朗姆提子磅蛋糕的做法 tc275有几路lin 谁能告诉我玩帝国时代2时候,黑暗爆TC的注意事项 洋葱焦糖咖喱怎么做 谁知道在韩国电影《宿命》中扮演主角民宇的女友是谁演的? 切达芝士曲奇怎么做 意式千层面作为一道很有水平的美食,怎样做才可以做出原有的味道? 什么东西能代替小苏打 芥末酱蛋怎么做 芥末酱蛋如何做 宋承宪拍的《宿命》讲的是什么啊?哪位知道麻烦给讲一下。谢谢 我曾经的公司,利用我曾经提供的银行账户洗钱,我该怎么办? 杨幂杨洋前东家,曾经的老牌影视公司,荣信达怎么就没落了? 许多曾经辉煌一时的公司都衰败了这个DNA.指的是