我有 domain.com 。如果用户已登录,则应自动加载 domain.com/option-X ,其中X是用户的预定义选项。
所以,我在index.php的顶部执行此操作:
header("Location: /option-X");
但是,如果用户没有登录,我只会自动选择第一个选项:
header("HTTP/1.1 301 Moved Permanently");
header("Location: /option-a");
所以,关于这样做的含义,我有两个问题:
答案 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是最佳响应代码