使用.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);
}
?>
不是重定向,而是显示链接 - 这是有效的。
答案 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;
}
?>