如何在PHP中进行重定向?

是否可以通过使用PHP将用户重定向到不同的页面

假设用户转到www.example.com/page.php,我想将他们重定向到www.example.com/index.php,如果不使用元刷新,我怎么做?可能吗

这甚至可以保护我的页面不被未经授权的用户访问

现有答案的摘要加上我自己的两分钱:

一,。基本答案

您可以使用header()函数发送新的HTTP头,但必须在任何HTML或文本之前发送到浏览器(例如,在<!DOCTYPE…>声明之前)

标题('Location:'。$newURL);

二,。重要细节

模具()退出()

标题(“位置:http://example.com/myOtherPage.php");
模具();

为什么要使用die()exit():每日WTF

绝对或相对URL

自2014年6月起,可以使用绝对URL和相对URL。参见RFC 7231,它取代了旧的RFC 2616,其中只允许绝对URL

状态代码

PHP的;地点“-header仍然使用HTTP 302重定向代码,这是一个;“临时”;重定向,并且可能不是您应该使用的。你应该考虑301(永久重定向)或303(其他)。

注意:W3C提到303标头与;许多HTTP/1.1之前的用户代理。当前使用的浏览器都是HTTP/1.1用户代理。对于许多其他用户代理,如蜘蛛和机器人,情况并非如此

三,。文件

HTTP头和PHP中的header()函数

  • PHP手册是怎么说的
  • 维基百科怎么说
  • W3C怎么说

四,。替代品

您可以使用http\u重定向($url)的替代方法需要安装PECL包PECL

五,。辅助函数

此功能不包含303状态代码:

函数重定向($url,$permanent=false)
{
标题('Location:'。$url,true,$permanent?301:302);
退出();
}
重定向('http://example.com/",假),;

这是更灵活的:

函数重定向($url,$statusCode=303)
{
标题('Location:'。$url,true,$statusCode);
模具();
}

六,。变通办法

如前所述,header()仅在写入任何内容之前重定向工作。如果在HTML输出中调用,它们通常会失败。然后,您可以使用HTML标题解决方法(不是很专业!),如:

<meta http equiv="刷新“;内容=”;0;url=finalpage.html&quot&燃气轮机;

甚至是JavaScript重定向

窗口。位置。替换("http://example.com/");

发表评论