php - 如何在 PHP 中进行重定向?

标签 php redirect http-status-code-301 http-redirect

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

假设用户访问 www.example.com/page.php 并且我想将他们重定向到 www.example.com/index.php,该怎么做我这样做时不使用元刷新吗?可能吗?

这甚至可以保护我的页面免受未经授权的用户的侵害。

最佳答案

现有答案的总结加上我自己的两分钱:

1。基本答案

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

header('Location: '.$newURL);

2。重要细节

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 用户代理。对于许多其他用户代理(例如蜘蛛和机器人)而言,情况并非如此。

3。文档

HTTP header 和 header() PHP 函数

4。替代方案

您可以使用http_redirect($url);的替代方法这需要 PECL package pecl待安装。

5。辅助函数

此函数不包含 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();
}

6。解决方法

如上所述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/47534543/

相关文章:

PHP:使用 Eclipse PDT 字段的类型提示

c# - 一种计算重定向 URL 的方法

java - 外部类java中的While循环

http - Pelican 静态站点生成器上的 301 HTTP 响应

redirect - 主页重定向会影响搜索引擎抓取吗?

php - 获取包含最新嵌套对象的前 5 个文档

php - DBAL 和 LOAD DATA LOCAL INFILE Doctrine

javascript - WordPress 脚本无法正确加载?

php - 通过js重定向和发送变量

.htaccess - 帮助处理来 self 网站的传出链接的 301 重定向