【问题标题】:PHP 301 Redirect, Impossible?PHP 301 重定向,不可能?
【发布时间】:2011-07-13 05:05:23
【问题描述】:

我一直在尝试进行正确的 301 重定向,但未能成功。无论我尝试什么,它总是一个 302 重定向。

返回 302:

http_redirect("urlgoeshere", '', false, HTTP_REDIRECT_PERM)

返回 302:

header("HTTP/1.1 301 Moved Permanently");
header("Location: urlgoeshere");

谁能解释为什么这些以 302 而不是 301 的形式返回?服务器操作系统是 linux,运行 PHP/5.2.14。自己试试吧。

我会给你们一个 URL 来试试。我正在使用 YSlow 和 Googlebot 进行测试。

应该是 301:http://www.fantasysp.com/player/mlb/Albert_Pujols/1486349

【问题讨论】:

  • 为我工作:$ curl http://localhost/test.php -iHTTP/1.1 301 Moved Permanently 我们需要有关您的环境的更多信息。
  • 您使用的是 Windows、Linux 还是 Mac?显然 IIS 有一些问题...
  • 确保您没有忽略一些简单的事情,例如编辑错误的文件、上传到错误的服务器等...
  • 服务器在 Linux 中运行,所以它并不完全是另一篇文章的欺骗,它指的是 IIS。

标签: php http-status-code-301


【解决方案1】:

其实很简单:

header('Location: ' . $url, true, 301);


如果您使用的是 FastCGI,请尝试这样做:

header('Status: 301 Moved Permanently', true);
header('Location: ' . $url); // or header('Location: ' . $url, true, 301);

【讨论】:

  • 我试过了,还是不行。我将 URL 添加到为我显示 302 的实时页面。你也看到 302 了吗?
  • @brant:我看到了 301。你用什么来检查 HTTP 响应代码?
  • 有趣。我正在 Firefox 中使用 YSlow 进行测试,并在网站管理员工具中查看 Googlebot 的响应。两者都为我显示 302。
  • @brant:我不知道如何在 YSlow 中看到这一点,但我已经发布了 FireBug 看到的代码和 HTTP 响应的屏幕截图。你用的是什么网络服务器?
  • @brant:您是将 PHP 作为 CGI 还是作为 Apache 模块运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2010-12-27
  • 1970-01-01
  • 2014-11-27
  • 2015-09-11
  • 2014-10-26
相关资源
最近更新 更多