4
スクリプトの実行前に$ _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に必要な正しいデータを持っているようですが、以前にはなかった2つの内部リダイレクトが発生していることも示しているようです-REDIRECT_REDIRECT_SCRIPT_URLを検索すると、ランダムなvar_dump出力しか返されません。SCRIPT_URLは新しいREDIRECT_URLですか? 編集1 再チェックREDIRECT_URLは(現在)設定されていますが、予想される型付きURLではなく、常に 'index.php'(mod_rewriteターゲット)に設定されています。PHP auto_prepend_fileを使用して、必要な変数を手動で設定しました。 初めて見逃したかどうかはわかりませんが、その間にいくつかの変更を加えたので、そこにない可能性が外部にあると思います。これが誰かを誤解させるならば、謝罪してください。 編集2 以下のErrorDocumentの言及に対処するために、使用されているmod_rewriteルールは次のとおりです。 RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] $ _GET ['url']変数が設定されているため、ルールが機能している必要があります。 明確にするために、この段階では、最初に述べたauto_prepend_fileの回避策を使用しました。