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

假设用户转到www.example.com/page.php,我想将其重定向到www.example.com/index.php,那么在不使用元刷新的情况下,我如何做到这一点?有可能吗?

这甚至可以保护我的页面免受未授权用户的攻击。


当前回答

我喜欢数秒后的重定向

<?php

header("Refresh: 3;url=https://theweek.com.br/índex.php");

其他回答

如果您在Apache上运行,也可以使用.htaccess进行重定向。

Redirect 301 / http://new-site.com/

Use:

<?php
    $url = "targetpage"
    function redirect$url(){
        if (headers_sent()) == false{
            echo '<script>window.location.href="' . $url . '";</script>';
        }
    }
?>

使用header()函数发送HTTP位置标头:

header('Location: '.$newURL);

与一些人的想法相反,die()与重定向无关。仅当您希望重定向而不是正常执行时使用它。

文件example.php:

<?php
    header('Location: static.html');
    $fh = fopen('/tmp/track.txt', 'a');
    fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
    fclose($fh);
?>

三次执行的结果:

bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00

恢复-强制性die()/exit()是一些与实际PHP无关的都市传说。这与客户端“尊重”Location:标头无关。无论使用何种客户端,发送头都不会停止PHP执行。

就像这里的其他人所说的,发送位置标头时:

header( "Location: http://www.mywebsite.com/otherpage.php" );

但在向浏览器发送任何其他输出之前,您需要执行此操作。

此外,如果您要使用此选项阻止未经身份验证的用户访问某些页面,如您所述,请记住,某些用户代理会忽略此选项,并继续在当前页面上运行,因此您需要在发送后死亡()。

您可以使用以下JavaScript方法

self.location=“http://www.example.com/index.php";window.location.href=“http://www.example.com/index.php";文档位置href='http://www.example.com/index.php';window.location.replace(“http://www.example.com/index.php");