如果我在任何serch引擎中验证html或注册web,我会收到302错误 .
原因是header()函数 . 如果我拿走它,一切都很好,200 OK状态 .
所以主要的问题是我需要这个web重定向是多语言的 .
接下来是逻辑 . 当用户第一次进入网页时,index.php - require_once是一个带有函数的文件:
function cookies() {
if (!isset($_COOKIE["lang"])){
setcookie('lang','ukr', time()+(60*60*24*31));
header('Location: index.php');
}}
cookies();
因此,用户可以看到已经使用deafault语言提交的页面 .
如果require_once文件没有重定向,则不会下载mysql中的数据,用户也看不到任何文本 .
问题:我应该把它留给HTTP 302或重建整个站点/逻辑不要在索引页面有任何重定向???
3 回答
每当你使用 Headers (“位置:......你会得到一个302,它's a status and not an error, it'告诉浏览器该网站已重定向页面:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
阅读那些验证器和引擎,看看302是否是一个问题,无论你想做什么,通常它不应该 .
一种肮脏的方式是强制 Headers , personally I don't encourage this and don't know what side-effects could it have really ,但它可能是一个快速解决方法来欺骗这些引擎:
302
不是错误 . 它是"Found"(又名"The document you asked for is over here")的状态代码 . 如果添加Location
标头,PHP会自动为您插入(除非手动插入状态,但此处不需要301)如果您要告诉人们根据他们的语言偏好获取不同的文档,这是预期的响应 .
但是从
index.php
重定向到index.php
是很奇怪的 . 据推测,您应该直接返回相应的文档而不是重定向 .我知道了 . 它实际上非常简单 .
The validators don't accept cookies. So they get stuck in a an infinite loop.
你可以测试一下:
从您的计算机中删除所有Cookie .
在浏览器中禁用cookie并尝试加载您的网站 .