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);
这两句话缺一不可,如果少第一句,则公共网站上的程序不干活。如果少第一句,则家里的程序不干活。