PHP标头重定向301 - 有什么含义?

时间:2011-09-06 18:49:31

标签: php redirect header http-status-code-301

我有 domain.com 。如果用户已登录,则应自动加载 domain.com/option-X ,其中X是用户的预定义选项。

所以,我在index.php的顶部执行此操作:

header("Location: /option-X"); 

但是,如果用户没有登录,我只会自动选择第一个选项:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 

所以,关于这样做的含义,我有两个问题:

  1. 由于搜索引擎抓取工具不会登录,因此他们将始终获得 domain.com/option-a - 它是否会影响他们有301标头?
  2. 执行这些重定向的服务器CPU负载是多少?我不知道如何进行测试。当前站点(没有重定向)每天访问量约为10万。

5 个答案:

答案 0 :(得分:88)

301的效果是搜索引擎将索引/选项-a而不是/ option-x。这可能是一件好事,因为/ option-x对于搜索索引是不可达的,因此可能对索引产生积极影响。只有你明智地使用它; - )

重定向后退出exit();停止脚本的其余部分执行

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 
exit();

答案 1 :(得分:27)

这样更好:

<?php
//* Permanently redirect page
header("Location: new_page.php",TRUE,301);
?>

只需一个电话,包括代码301.另请注意同一目录中文件的相对路径(不是“/dir/dir/new_page.php”等),所有现代浏览器似乎都支持这种路径。

我认为这可以从PHP 5.1.2开始,可能更早。

答案 2 :(得分:6)

只是提示:使用http_response_code比编写完整标题更容易记住:

http_response_code(301);
header('Location: /option-a'); 
exit;

答案 3 :(得分:4)

301重定向等搜索引擎比404或其他类型的客户端重定向更好,不用担心。

CPU使用率将是最小的,如果你想节省更多的周期,你可以尝试使用htaccess处理apache中的重定向,那么php甚至不必涉及。如果你想加载测试服务器,你可以使用apache附带的ab,或者如果你正在寻找一个更强大的测试工具,可以使用httperf。

答案 4 :(得分:3)

确保在重定向后die(),并确保在脚本执行时重定向尽可能地重定向。它确保不会浪费任何数据库查询(如果有的话)。这是我能给你的一个提示

对于搜索引擎,301是最佳响应代码