有人可以指向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();
}
}
}
谢谢!
答案 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;
}
}