从404页面重定向标题

时间:2018-03-08 17:29:23

标签: php

使用.htaccess,我正在捕捉未发现的页面并将它们发送到404.php 我的网站曾经是ASP.net,现在是php。大多数链接都在.htaccess中针对.aspx页面更正为.php,但我有些内容不区分大小写。例如,MyPAGE.aspx需要是MyPage.php。

我的404页面正在显示,其中我可以根据需要调整uri并显示链接。但它本身不会重定向。

404文件中的代码就是这样。

<?php
     $uri = $_SERVER["REQUEST_URI"];

     echo "<p>" . $uri . "</p>";

     $pos = stripos($uri, "mypage.php");
     if ($pos)
        {
            $uri = str_ireplace ("mypage.php", "MyPage.php", $uri);
            header('Location: ' . $uri);
            echo sprintf("<p>Please try : <a href='%s'>%s</a></p>",$uri,$uri);

        }

    ?>

不是重定向,而是显示链接 - 这是有效的。

2 个答案:

答案 0 :(得分:0)

根据我的理解,在已经发送404后,使用标头请求(302)重定向不起作用。

相反,请执行meta refresh

<meta http-equiv="refresh" content="0;url=<?php echo $uri; ?>" />

你的可能是:

<?php
     $uri = $_SERVER["REQUEST_URI"];

     echo "<p>" . $uri . "</p>";

     $pos = stripos($uri, "mypage.php");
     if ($pos)
        {
            $uri = str_ireplace ("mypage.php", "MyPage.php", $uri);

            echo sprintf("<meta http-equiv=\"refresh\" content=\"0;url=%s\">",$uri);
            echo sprintf("<p>Please try : <a href='%s'>%s</a></p>",$uri,$uri);

        }
?>

答案 1 :(得分:0)

删除header之前的所有输出,然后在header

之后退出
<?php
 $uri = $_SERVER["REQUEST_URI"];
 $pos = stripos($uri, "mypage.php");
 if ($pos)
    {
        $uri = str_ireplace ("mypage.php", "MyPage.php", $uri);
        header('Location: ' . $uri);
        exit;
    }
  ?>