php 301 重定向实际上是在执行 302 重定向

Posted

技术标签:

【中文标题】php 301 重定向实际上是在执行 302 重定向【英文标题】:php 301 redirects actually doing a 302 redirect 【发布时间】:2010-12-06 10:37:27 【问题描述】:

我一直在谷歌上搜索,但似乎没有人知道答案。

这篇文章很好地描述了这个问题:

http://www.mail-archive.com/php-general@lists.php.net/msg198576.html

服务器是 Windows 2008 快速CGI PHP 5

【问题讨论】:

【参考方案1】:

我这里没有 PHP 来测试这个,但这不会产生 301 吗?

header('Location: http://www.example.com/', true, 301);

【讨论】:

你会这么认为,但不,它会产生 302 重定向 我很想删除这个答案,但我认为最好把它留在这里,这样其他人就不会提出同样的建议。【参考方案2】:

应该由 R. Bemrose 给出;这是通常的示例代码。我猜你的 PHP 执行环境有些地方不太对劲。

您可以尝试的另一种方法是传回状态行的 CGI 标准方法:

header('Status: 301 Moved permanently');
header('Location: http://www.example.com/');

【讨论】:

应该可以,我希望它可以,但事实并非如此。我读到这可能是 FastCGI 模块中的一个错误,但我找不到任何可以修复它的东西。【参考方案3】:

目前看来,唯一的答案是在使用 PHP 时不要在 IIS7 上使用 FastCGI(因为 FastCGI 中的一个错误)——这是垃圾,因为它非常快。使用 isapi 可以让 301 重定向正常工作,但速度不快。

【讨论】:

【参考方案4】:

微软为此发布了一个修复程序: http://www.microsoft.com/downloads/en/results.aspx?freetext=980363&displaylang=en&stype=s_basic

【讨论】:

以上是关于php 301 重定向实际上是在执行 302 重定向的主要内容,如果未能解决你的问题,请参考以下文章

http 301 302 303 307 308 傻傻分不清

我应该在提交表单后使用 301、302 还是 303 重定向?

PHP 301 重定向,不可能?

如何找到 301/302 重定向源?

HTTP 的重定向301,302,303,307(转)

301/302的区别 python魔法语法