如何向所有非规范网址发送404?

时间:2014-10-08 07:29:51

标签: .htaccess http-status-code-404

有人可以指向htaccess规则,这会将404错误触发到任何没有规范标记的页面吗?

我想到了这个片段可以实现的东西(不确定,它是否正确,但看起来会如此):

function resolve_canonical($canonical,$location = "404"){
    $current_url= "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    if($current_url !== $canonical){
        if($location == "404"){
            // header("location: http://".$_SERVER['HTTP_HOST']."/404");
            // header("HTTP/1.0 404 Not Found");
            readfile('404.php');
            exit();      
        }elseif($location == "redirect"){
            header("location: ".$canonical);          
            exit();  
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

你不能用.htaccess这样做,你无法访问像这样的php变量。此功能永远不会触发。

一种可能是GET参数,你可能可以在你的htaccess中使用它,但它很容易。

您现在的工作方式很好,只需将其放在代码中,这样就不会运行任何不必要的代码。


您的代码可能会缩短(可能会过度使用,但要告诉您可以这样做):

function resolve_canonical($canonical,$location = "404"){
    if($canonical !== "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] ){
        if($location == "404"){          header("location: "/404", true, 404); }
        elseif($location == "redirect"){ header("location: ".$canonical);      }
        exit;  
    }
}