- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以通过使用 PHP 将用户重定向到不同的页面?
假设用户访问 www.example.com/page.php
并且我想将他们重定向到 www.example.com/index.php
,该怎么做我这样做时不使用元刷新吗?可能吗?
这甚至可以保护我的页面免受未经授权的用户的侵害。
最佳答案
现有答案的总结加上我自己的两分钱:
您可以使用header()
函数来发送新的 HTTP header ,但这必须在任何 HTML 或文本之前发送到浏览器(例如,在 <!DOCTYPE ...>
声明之前)。
header('Location: '.$newURL);
die() 或 exit()
header("Location: https://example.com/myOtherPage.php");
die();
为什么你应该使用die()
或exit()
: The Daily WTF
绝对或相对 URL
自 2014 年 6 月起,绝对 URL 和相对 URL 都可以使用。请参阅RFC 7231它已取代旧的 RFC 2616 ,其中只允许使用绝对 URL。
状态代码
PHP 的“Location” header 仍然使用 HTTP 302 -redirect 代码,这是一个“临时”重定向,可能不是您应该使用的。您应该考虑 301 (永久重定向)或 303 (其他)。
注:W3C mentions 303 header 与“许多 HTTP/1.1 之前的用户代理不兼容。当前使用的浏览器都是 HTTP/1.1 用户代理。对于许多其他用户代理(例如蜘蛛和机器人)而言,情况并非如此。
HTTP header 和 header()
PHP 函数
您可以使用http_redirect($url);
的替代方法这需要 PECL package pecl待安装。
此函数不包含 303 状态代码:
function Redirect($url, $permanent = false)
{
header('Location: ' . $url, true, $permanent ? 301 : 302);
exit();
}
Redirect('https://example.com/', false);
这更灵活:
function redirect($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
}
如上所述header()
重定向仅在写出任何内容之前起作用。如果invoked inmidst HTML,它们通常会失败输出。然后你可以使用 HTML header 解决方法(不是很专业!),例如:
<meta http-equiv="refresh" content="0;url=finalpage.html">
甚至是 JavaScript 重定向。
window.location.replace("https://example.com/");
关于php - 如何在 PHP 中进行重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166273/
我是一名优秀的程序员,十分优秀!