php – 我可以在脚本执行之前全局设置$_SERVER [‘REDIRECT_URL’]吗?

前端之家收集整理的这篇文章主要介绍了php – 我可以在脚本执行之前全局设置$_SERVER [‘REDIRECT_URL’]吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将许多站点从旧服务器配置迁移到新服务器配置.每个站点都基于类似(但可悲的是不相同)的代码库,使用mod_rewrite URL.

> Ubuntu 8.04 LTS => Ubuntu 12.04 LTS
> Apache 2.22.8 => Apache 2.2.22
> PHP 5.2(FastCGI)=> PHP 5.3(PHP5-FPM)

主要像魅力一样工作,但在新的配置中,$_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中设置.

猜你在找的PHP相关文章