重定向允许您将客户端浏览器重定向到其他URL。 在切换域,更改站点的结构或切换到HTTPS时,可以使用它。
在本文中,我将向您展示如何使用PHP重定向到另一个页面。 我将确切解释PHP重定向的工作原理,并向您展示幕后发生的事情。
通过免费的在线课程学习PHP
基本重定向如何工作?
在深入探讨PHP重定向的细节之前,让我们快速了解HTTP重定向的工作原理。 看下图。

让我们了解以上屏幕截图中发生的情况:
- 客户端浏览器从服务器请求特定页面。 在上面的示例中,客户端已请求index.php文件的内容。
- 服务器接收到index.php文件请求,并希望通知客户端它不再可用或移动到其他地方,它应该寻找一个新文件: new_index.php 。 服务器发送带有新URL的
Location
标头以及301或302 HTTP代码。 这些是用于重定向的HTTP代码。 - 当客户端浏览器遇到301或302代码时,它知道它必须发起另一个对新URL的请求才能获取内容。 在上面的示例中,它发起一个请求以获取
new_index.php
文件。
- 最后,服务器发送新URL的内容。
这就是基本HTTP重定向的工作方式。 在下一节中,我们将讨论PHP重定向的工作方式。
重定向在PHP中的工作方式
在PHP中,当您要将用户从一个页面重定向到另一页面时,需要使用header()
函数。 标头功能允许您发送原始的HTTP位置标头,该标头执行实际的重定向,如上一节所述。
如何使用标题功能
让我们看一下header()
函数的语法。
header( $header, $replace, $http_response_code )
-
$header
:这是您要使用的HTTP标头字符串。 在本例中,我们将使用Location
标头进行重定向。 -
$replace
:这是一个可选参数,指示标头是否应替换以前的相似标头。 -
$http_response_code
:它允许您发送特定的响应代码。
现在,让我们看下面的示例,以了解它们如何协同工作。
<?php
// index.php
header("Location: https://www.yoursite.com/new_index.php");
exit();
?>
执行以上脚本后,它将客户端浏览器重定向到http://www.yoursite.com/new_index.php 。 在后台,它将发送原始HTTP Location
标头以及302状态代码。 302状态代码用于临时重定向,但是如果您要永久重定向,则可以在第三个参数中传递301代码,如以下代码段所示。
<?php
// index.php
header("Location: http://www.yoursite.com/new_index.php", TRUE, 301);
exit();
?>
301永久重定向可让您通知搜索引擎该页面不再可用,并且可以将其替换为新页面。
标题重定向后,为什么要使用Die()
或Exit()
函数?
眼睛敏锐的用户会注意到,我在上面的示例中使用过exit()
函数。 实际上,必须在标头重定向后立即使用exit()
或die()
函数来停止脚本执行并避免任何不良结果。
因此,始终建议您在重定向后使用这些功能之一。
著名的错误:标头已发送
如果您是经验丰富的PHP程序员,那么我相信您在日常PHP开发中的某个时刻遇到了这个著名的PHP错误。 但是,对于初学者来说,遇到此错误确实很烦人,因为它确实很难调试和修复。 在大多数情况下,他们甚至不知道它是由标头重定向引起的。
经验法则是,当您在脚本中使用header()
函数时,需要确保在此之前不发送任何输出。 否则,PHP会抱怨“标题已发送”错误。 即使您在使用标头函数之前发送了一个空格也可能发生这种情况。
结论
在本文中,我们讨论了PHP编程的重要功能之一:重定向。 首先,我们了解了HTTP重定向的基础知识,然后演示了它在PHP中的工作方式。
探索在CodeCanyon上创建的数千个最好,最有用的PHP脚本 。 只需支付一次一次性费用,您就可以购买这些高质量WordPress主题之一,并为您和您的访客改善网站体验。
翻译自: https://code.tutsplus.com/tutorials/how-to-redirect-with-php--cms-34680