与环境无关的301/302重定向与PHP
我已经运行了FastCGI的accidental usage状态标题.在环境无关的脚本中是否有使用它的优缺点?
单独对Apache 2.2而言,我没有任何问题(根据phpinfo(),服务器使用FastCGI). 该脚本针对Apache和nginx(mod_php和FastCGI).什么是防故障解决方案? 最佳答案 HTTP状态代码作为HTTP响应的第一行的一部分发出.根据Fast CGI FAQ,Status头是由服务器识别的特殊头部,它控制这一行,并且不发送到客户端.但是如果它与非FastCGI服务器适配器一起使用,服务器将忽略该值,并且可以发送头.您已经拥有的解决方案是最环保的方式.唯一的添加将是重定向后立即退出语句,以确保脚本终止. 让我们来看看在引擎盖下更加紧密的发生什么. 以下PHP重定向代码
将调用ext / standard / head.c中的C代码
这将依次调用main / SAPI.c中的sapi_header_op函数
如果FastCGI后端正在使用,则添加的标头最终将由sapi / cgi / cgi_main.c中的sapi_cgi_send_headers函数发出
请注意,sapi / apache2handler / sapi_apache2.c中的php_apache_sapi_send_headers函数没有对Status头的任何特殊处理,因为它不用于模块通信. 所以通过执行上面的PHP代码 > HTTP状态行中的响应代码被强制为301 所有操作都在SAPI层中执行,SAPI层是HTTP服务器适配器(FastCGI,Apache模块等)之上的抽象层.这是跨越环境和可靠的. 历史上,FastCGI中出现了错误,阻止了301个响应正常工作,但这些错误在Web服务器实现中,并且没有什么可以从PHP代码中解决问题. 也可以看看: > https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Response_message (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- nginx – HttpGeoipModule $geoip_country_code为空
- java – 使用Google Compute Engine作为Google App Engine
- asp.net – 如何配置nginx以支持cloudflare下的signalr3?
- 为解析服务器IP的所有服务器名称提供Nginx SSL证书
- Nginx – 重写和pass_proxy到另一个端口导致404找不到
- nginx – Rails 3.2中的活动记录查询问题
- 使Nginx和PHP-FPM代码版本无关
- nginx – “include_recipe”与Vagrantfile“chef.add_reci
- url-rewriting – 将子域上的已知文件夹重定向到nginx的主站
- 外部托管的Nginx代理图像/ javascript