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?的主要内容,如果未能解决你的问题,请参考以下文章

如何将404页面与php页面加载脚本连接起来

jQuery Ajax 返回 404 错误,但响应正确

Ajax 调用 php 脚本返回 404 错误

配置Nginx全过程

使用 RewriteRules 和 404 进行 301 重定向

apache环境下禁止某文件夹内运行PHP脚本禁止访问文件或目录执行权限的设置方法