繁体   English   中英

使用301/302重定向

[英]Using a 301/302 Redirect

我的网站上有文章列表,每篇文章都未发表,并且发表过多次。

禁用已发布的标记(0)时,将无法再访问该文章。

当文章不再可访问时,我将用户重定向到主页,我尝试使用301重定向:

header("Location: /", true, 301);

当发布文章,然后未发布,然后再次发布时,这会导致问题,浏览器似乎将未发布的重定向缓存到主页,并且您无法再查看该文章-即使该文章的发布标志设置为1。

所以我尝试了302:

header("Location: /", true, 302);

但我一直在阅读,不建议使用此方法。

有没有更好的方法来实现这一目标?

您使用的HTTP代码不合适。

重定向标头(301等)旨在指示所请求的内容确实存在并且可以访问,只是不再位于所请求的位置。 如果您尚未发布文档,则无法从任何位置访问它。 在这种情况下,发送3XX重定向代码是错误的,因为您误导了浏览器和其他用户代理(例如Google机器人)。

您应该发送一条代码,指示内容不再可用(410 Gone,403 Forbidden或404 Not Found),并显示错误页面。 如果需要,该错误页面可以是主页的副本,但是出于可用性的原因,我建议您不要这样做。 最好告诉人们内容不再可用,而不仅仅是重定向到主页。

顺便说一句,302不再表示“暂时移动”,而现在表示“找到”。 现在,临时重定向的正确HTTP代码是303(“另请参见”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM