http_response_code或Status code的重置问题

在写一个产生短链接的程序。短链接本身对应的文件当然不是直接存在域名根目录下的,而是通过.htaccess的404 ErrorHandler转交给检索程序,由检索程序把真正的文件输出出来。这里需要把404号Status code覆盖掉。

在家里机器上写的PHP代码是:

header("Content-type: $mime", FALSE, 200);

其中200是代表OK的状态码。

这句话在家里的机器上工作得挺好,但上传到公共网站上之后,程序工作方式就不是那么回事了。404号状态码并未被覆盖掉,如果输出文件是图像,还能勉强显示。但如果是个下载附件,就看到了404号“网页不存在”的错误信息。

经过反复调试,找到解决方法如下:

header("Status: 200 OK");    // Reset the status to OK (200).
header("Content-type: $mime", FALSE, 200);

这两句话缺一不可,如果少第一句,则公共网站上的程序不干活。如果少第一句,则家里的程序不干活。

评论关闭