Firefox 检测到该服务器正在将此地址的请求循环重定向
原因之一可能就是如果实际应用时多个域名绑一个站的301代码问题
如a.com,a.net,www.b.net和www.a.com都是绑在一个站,为了网址规范化都要301跳转到www.a.com这个主域名上,因为默认的页面都是同一个,就要进行条件判断是否跳转,即对主机头不是www.a.com才转向,以ASP为例:
IF Request.Url.Host<>"www.a.com" THEN
string newurl="http://www.a.com" & Request.Url.PathAndQuery
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", newurl
END IF
如果不加判断,就会自己重定向到自己形成循环。
Cannot modify header information - headers already sent by...错误
http头部信息已经发送给客户端了,当然就不能再修改头部状态码进行301了。因此转代码要放在HTML输出之前,不能用HTML实质内容输出。
以PHP为例,如文件<?php ... ?>之外有空白行,特别是include或者require的文件,这有可能导致输出,这时就不能再修改头部信息了。可以开启缓存ob_start();只要在转向之前缓存不满,网页就不会被发送,就修改状态码;或运行ob_end_clean()清除所有缓存并关闭缓存。 |