> 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解决方法.