Hostwinds 博客


307临时重定向:它是什么以及何时/如何使用它 特色图片

307临时重定向:它是什么以及何时/如何使用它

通过: Hostwinds Team  /  三行 29, 2024


什么是307状态代码?

307临时重定向是HTTP响应状态代码,指示请求的资源(例如网页)已临时转移到其他URL。但是,与类似的临时重定向状态代码不同,例如302(找到)或303(请参阅其他),客户(例如Web浏览器)被告知继续使用与原始请求的新URL使用相同的HTTP请求方法。

简而言之,当服务器根据浏览器的请求发送307状态代码时,这意味着请求的资源已暂时移至另一个URL。浏览器应遵循重定向,并使用相同的HTTP请求方法(例如获取或发布),用于原始URL访问新的URL。

何时使用307状态代码

当将服务器(浏览器)重定向到新URL时,服务器希望客户(浏览器)继续使用相同的请求方法,其中大多数围绕安全性并保持一致的用户体验时,有很多原因。

以下是可以有效利用307状态代码的一些情况:

身份验证和授权: 当客户端将请求发送到需要身份验证或授权的资源时,服务器可以使用307状态代码以及登录或授权页面的URL响应。这样可以确保客户在成功身份验证后不更改方法后重新提交原始请求(例如,帖子)。

表格提交: 在涉及表单提交的Web应用程序中,例如 电子商务 结帐过程或在线调查,如果需要暂时重定向用户(例如,由于会话到期或验证错误,可以使用307状态代码来维持表单提交方法的完整性。

临时站点维护或停机时间: 在网站的临时维护或停机期间,服务器可能需要将传入的请求重定向到临时页面。通过使用307状态代码,服务器可确保客户端在不更改HTTP方法的情况下遵循重定向,一旦维护完成后,就可以将无缝过渡回到原始资源。

处理资源位置变化: 如果资源已暂时移至服务器上的其他位置或完全不同的服务器,但希望将来返回其原始位置,则可以使用307状态代码在保留临时搬迁的同时将其告知客户原始请求方法。

何时避免使用307重定向

虽然307个状态代码可以帮助维持安全性和受益者体验,但在整个网站上使用的响应代码肯定不是全部响应代码。实际上,如果在正确的方案中未使用,则307个重定向可能会对网站funcationLity和用户体验产生负面影响。

以下是何时避免307重定向的示例:

永久URL变化: 搜索引擎将307重定向解释为临时,因此,如果您打算重定向对 搜索引擎优化,例如将链接权益传递给新URL,307重定向可能会阻碍这一点。

301重定向是当意图永久将一个URL移至另一个URL时应使用的状态代码。

网站范围的重定向: 使用307个状态代码进行站点范围或大量重定向可能会影响服务器性能,尤其是对于高流量站点。处理大量的临时重定向可以使服务器的资源变得混乱并减慢站点的响应时间,最终会损害SEO和用户体验。

可以从307重定向中受益的网站

虽然大多数网站出于某种原因可以使用307状态代码,但很少有人脱颖而出:

电子商务平台: 涉及购物车,结帐流程和用户帐户的网站可以从身份验证,付款处理或临时维护期间从307个重定向中受益。

Web应用程序: 提供在线服务,生产力工具或协作平台的网站可以使用307个重定向来维护用户会议,保留表单提交或处理资源的临时重新定位。

会员或订阅服务: 需要用户身份验证或授权的网站,例如会员网站,基于订阅的平台或内容管理系统,可以利用307个重定向来管理用户会话并确保无缝访问受保护的资源。

在线表格和调查: 需要用户输入和提交的网站托管表单或调查可以采用307个重定向来处理验证错误,身份验证要求或临时中断,同时保留用户提取的数据。

社交媒体平台: 具有用户生成的内容,消息传递功能或交互式元素的平台可以从307个重定向上受益,以维护会话上下文,处理临时资源更改或管理身份验证过程,而不会破坏用户体验。

307临时重定向与307内部重定向

术语" 307内部重定向"已成为另一种307重定向的类型,特别是将浏览器从站点的HTTP版本引导到其HTTPS版本的过程。

尽管诸如Chrome之类的浏览器可能会将HTTP重定向为HTTP作为" 307内部重定向",但根本不存在建议的动作。

"内部重定向"一词通常是指服务器端过程 网络服务器 内部将请求重定向到同一服务器内的另一个资源或位置,而没有客户(浏览器)意识到重定向。但是,这个概念并未与307状态代码有关。它可以应用于各种HTTP状态代码,包括307。

简而言之," 307临时重定向"和" 307内部重定向"是指同一事物,但它们与将HTTP重定向到HTTPS无关。

通常使用状态代码(如301(永久移动)或302(找到)(找到),从HTTP重定向到HTTP。

301重定向是用于永久将HTTP流量重定向到HTTPS的标准状态代码。

302、303和307重定向之间的差异

302、303和307是3xx状态代码范围内的三种临时重定向类型,在处理和发布http请求时,每个临时重定向范围内的三种临时重定向。

本节将重点介绍典型的客户将如何响应每种类型的临时重定向响应,特别是在最初提出后请求之后。

get-post-request-temporary-redirect-process.webp
什么是Get请求?

浏览器使用Get请求来从Web服务器请求/检索网页。无论用户是否想通过链接单击链接或在地址栏中输入URL,浏览器将GET请求发送到Web服务器,要求它提供指定的网页。

什么是邮政请求?

当用户通过将数据(例如表单提交或文件上传)提交给Web服务器的数据与网页进行交互时,就会发生发布请求。然后,该数据由服务器处理或存储,允许该网页根据用户的输入执行特定的操作。

302重定向

当客户端(浏览器)遇到Web服务器的302响应时,它将随访访问服务器提供的新URL的GET请求。无论客户的原始请求是获取还是发布,都将发生这种情况。

如果客户最初发送邮政请求,这可能会导致问题。

例如,如果用户使用邮政请求提交信息,例如购买表格,并且服务器以302重定向响应,则浏览器将自动发送GET请求。结果,原始邮政请求的信息可能无法到达服务器进行处理。

303重定向

303重定向功能类似于 302重定向 通过提示客户对GET方法进行跟进,无论其原始请求方法如何。

但是,如果原始请求是发布请求,则303重定向响应要求客户端提示用户在将其发送到服务器之前确认后续请求。

也像302个重定向一样,使用303个重定向进行数据提交网页(例如表单填充和文件上传)可能会导致零散或丢失的数据。

307重定向

与302和303重定向不同,307重定向保留了重定向后的原始请求方法(获取或发布)。简而言之,邮政请求保留为邮政请求,而get请求将作为重定向后的get请求。

这使得307重定向将数据提交到Web服务器的最佳选择,因为它可以确保安全传输和准确的信息从客户端到服务器的准确传递。

实施307重定向的4种方法

有几种将307重定向到您的网站的方法。最适合您的方法将取决于您在编码中的舒适度以及您是否正在运行CMS(WordPress,Drupal,Joomla等)。

无论您选择哪种方法,请确保首先创建网站的备份,或者至少您要处理的文件。我们不能强调 数据备份的重要性,尤其是在.htaccess文件中工作时。

使用.htaccess文件

1.在网站的根目录中访问.htaccess文件。

2.将以下行添加到.htaccess文件:

Redirect 307 /old-page.html http://example.com/new-page.html

3.用旧的URL替换/old-page.html和http://example.com/new-page.html使用新的URL。

4.将更改保存到.htaccess文件并测试重定向。

使用服务器端脚本(PHP)

1.在服务器上创建一个新的PHP文件(例如Redirect.php)。

2.将以下PHP代码添加到文件:

<?php

header("HTTP/1.1 307 Temporary Redirect");

header("Location: http://example.com/new-page.html");

exit();

?>

3.用要重定向到的URL替换http://example.com/new-page.html。

4.保存文件并将其上传到您的服务器。

5.访问浏览器中的文件,以确保重定向工作。

使用服务器配置(Apache虚拟主机)

1.访问服务器的配置文件(例如httpd.conf或apache2.conf)。

2.在适当的<virtualHost>或<Directory>块中添加以下行:

Redirect 307 /old-page.html http://example.com/new-page.html

3.将更改保存到配置文件中,然后重新启动Apache服务器以应用更改。

4.通过访问浏览器中的旧URL来测试重定向。

使用插件

对于使用CMS(内容管理系统)(例如WordPress或Weebly)的网站,实现307个重定向与通过插件进行操作一样容易。

查找您喜欢的插件,下载它,然后只需按照如何实现307重定向的说明即可。

撰写者 Hostwinds Team  /  三行 29, 2024