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

And*_* SK 46 php redirect header http-status-code-301

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

所以,我在index.php的顶部这样做:

header("Location: /option-X"); 
Run Code Online (Sandbox Code Playgroud)

但是,如果用户未登录,我只需自动选择第一个选项,如下所示:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 
Run Code Online (Sandbox Code Playgroud)

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

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

Roe*_*zen 96

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

重定向后放入exit(); 停止执行的其余脚本

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /option-a"); 
exit();
Run Code Online (Sandbox Code Playgroud)


Gar*_*mad 31

这个更好:

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

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

我认为这是自PHP 5.1.2以来可能更早的.

  • 语法 `header(标头, 替换, http_response_code)` (2认同)

the*_*uts 6

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

http_response_code(301);
header('Location: /option-a'); 
exit;
Run Code Online (Sandbox Code Playgroud)