php – 我可以在脚本执行之前全局设置$_SERVER [‘REDIRECT_URL
我正在将许多站点从旧服务器配置迁移到新服务器配置.每个站点都基于类似(但可悲的是不相同)的代码库,使用mod_rewrite URL.
> Ubuntu 8.04 LTS => Ubuntu 12.04 LTS 主要像魅力一样工作,但在新的配置中,$_SERVER [‘REDIRECT_URL’]不再设置,并且由于依赖于此全局变量,代码失败. 根据我的理解,当重定向发生时,此变量由Apache设置.显然现在没有发生这种情况,但我很难找到原因. >它是Apache升级,还是(我的猜测)从PHP FastCGI到PHP5-FPM的转换? 我真的宁愿不必编辑每个站点上的代码,所以如果需要我会设置一个全局PHP auto_prepend,但理想情况下我想修复服务器配置并首先设置这个. 潜在相关:我现在还有一些新的$_SERVER变量,即REDIRECT_SCRIPT_URL和REDIRECT_REDIRECT_SCRIPT_URL.这些似乎有我想要的REDIRECT_URL的正确数据,但似乎也表明有两个内部重定向发生,而不是之前 – 谷歌搜索REDIRECT_REDIRECT_SCRIPT_URL只返回随机的var_dump输出. SCRIPT_URL是新的REDIRECT_URL吗? 编辑1 再次检查REDIRECT_URL是(现在)设置,但总是设置为’index.php'(mod_rewrite目标)而不是预期的类型化URL.我已经使用PHP auto_prepend_file来手动设置所需的变量. 我不确定我第一次错过了它,但是我在此期间做了几处改动,所以我想有一个外面的机会它不存在.如果这会误导任何人,请道歉. 编辑2 为了解决下面提到的ErrorDocument,正在使用的mod_rewrite规则是: RewriteRule ^(.*)$/index.php?url=$1 [QSA,L] $_GET [‘url’]变量已设置,因此规则必须正常工作. 要清楚,在这个阶段我已经使用了我最初提到的auto_prepend_file解决方法.
REDIRECT_URL仅由Apache Web服务器和
only in certain circumstances设置.它可能不是您的代码应该依赖的东西.据我所知,最好的解决方案是修复错误的PHP代码;你不能强迫这总是在Apache中设置.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |