是否可以通过使用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"&燃气轮机;
甚至是JavaScript重定向
窗口。位置。替换(";http://example.com/");