PHP中的404脚本到301?
Posted
技术标签:
【中文标题】PHP中的404脚本到301?【英文标题】:PHP in a 404 script to 301? 【发布时间】:2013-03-22 09:07:38 【问题描述】:我想对大量旧网址进行 301 处理。
我可以通过 php 在 404 脚本中执行此操作吗,或者这会弄乱搜索引擎结果(他们认为找不到页面)?
我当前的 .htaccess:
ErrorDocument 404 /404/
我的 404/index.php 脚本计划:
<?
switch (rtrim($_SERVER["REQUEST_URI"],"/"))
case "/blah/foo" :
$redirect="/somewhere_else/";
break;
case "/over_here" :
$redirect="/over_there/";
break;
case "/etc/etc/etc" :
$redirect="/etc/and_so_on/";
break;
if($redirect)
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: ".$redirect);
exit();
?>
<html>
<head>
<title>404: Page not found.</title>
</head>
<body>
<h1>404: Page not found.</h1>
</body>
</html>
所以,基本上,重定向不是问题,但我不希望搜索引擎认为这些页面“未找到”或将“少考虑”它们,或类似的东西......
这是合法的吗? Google 会对此感到满意吗?
【问题讨论】:
【参考方案1】:发送Location
HTTP 标头会自动设置相应的状态。它是documented,很容易使用 Firebug 或浏览器的等效工具进行测试。
【讨论】:
需要添加header("HTTP/1.0 404 Not Found"); @NanheKumar - 问题的重点是避免 404。你只能有一个 HTTP 状态,它必须是 301。 你是对的,但是你可以看到上面的代码如果 $redirect 没有设置那么你正在为 404 工作 @NanheKumar - 抱歉,我不明白你的意思。恕我直言,这个问题很清楚:尽可能使用 Apache 的 Not Found 处理程序页面重定向到移动的文档。我认为这是可能的,而且我自己已经做了很多年了。 我刚刚尝试过,使用“Fetch as Google”(多么好的工具!)。它似乎工作得很好!以上是关于PHP中的404脚本到301?的主要内容,如果未能解决你的问题,请参考以下文章