2012-02-06 12 views
2

でのmod_rewriteを使用して設定します。うまく動作し、urlroute.phpの要求されたURLに$_GET['q']としてアクセスできます。へのアクセス環境変数は、私はこの小さな.htaccessファイルを持っているPHP

mod_rewriteを使用して環境変数myvariableを設定しています urlroute.phpで$_SERVER['myvariable']とアクセスできます。私は奇妙に思われる$_ENV['myvariable']を使ってアクセスできません。誰かがその理由を説明してもらえますか?

私の知る限り、mod_redirectはリダイレクトを行う際に環境変数名の前にREDIRECT_という文字列を付加します(私の場合は常にそうです)。しかし、私にとっては$_SERVER['myvariable']$_SERVER['REDIRECT_myvariable']の両方が利用可能で、同じ内容に設定されています。どうして?

答えて

2

this postも同じ機能について説明しています。書き換えエンジンは各サイクルの開始時に.htaccessファイルの評価時にループし、エンジンは環境変数をコピーにコピーしますREDIRECT_ *。したがって、.htaccessファイルの解析に3つのループが必要な場合は、REDIRECT_REDIRECT_ *というようにファイルが続きます。

のApache 2.3は、新しい[E]フラグが含まれていますが、以前のバージョンで同じことを実現するために、この機能を使用することができます

RewriteCond %{ENV:REDIRECT_END} =1 
RewriteRule^ - [L] 

# other rules 

... 

RewriteRule somepattern somesubst [L,E=END:1] 

私の知る限りを、これらの変数は、利用可能な、SERVER文脈ますが、彼らはで使用可能かどうか環境は、PHPの実装方法に依存します。 Apache + mod_php、Apache + mod_suphp、Apache + mod_fcgi、IIS、...

+0

+1良い答えですが、私はあなたが 'RedirectCond'の代わりに' RewriteCond'を意味したと思います。 – anubhava

+0

@anubhava、それは私が "mindfart"と呼ぶものです。ごめんなさい。もちろんあなたは正しいです。私は答えを編集した – TerryE

関連する問題