mod_rewriteおよびユーザー環境変数

Apacheサーバーにはmod_envモジュールがあり、その助けを借りてユーザー環境変数を設定できます。



  setenv foo bar 


mod_rewriteモジュールのRewriteCondディレクティブでこのようなカスタム環境変数を使用する必要がありました。 ただし、SetEnvを使用して設定された変数はmod_rewrite :(。で使用できないことが判明しました。



どうする? 解決策は非常に簡単です。 この単純なルールを使用して、mod_rewriteが使用できる環境変数を設定できます。



  RewriteRule。*-[E = foo:bar] 


リダイレクトは発生しません。環境変数fooに値barを設定するだけです( ダッシュは置換を実行しないことを示します( 既存のパスはそのまま渡されます) -httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule



さらに、この変数を使用できます。



  RewriteCond%{ENV:foo} bar#次のルールは、変数fooの値がbarの場合にのみ適用されます。 


(ENVプレフィックスに注意してください:私の理解では、環境変数を使用する必要がありますが、QUERY_STRINGなどの標準変数は環境変数なしで使用できます)



以上です。 (私のような)めったにApacheを設定する必要のない人に、この情報が役立つことを願っています



All Articles