web-dev-qa-db-ja.com

htaccess書き換えルールでSetEnv変数を使用する

httpd.conf仮想ホストブロックには

SetEnv MAGE_RUN_CODE "v2_us_es"

その変数を.htaccessファイルで使用することは可能ですか?

何かのようなもの

RewriteRule ^sitemap\.xml$ /media/sitemaps/%{MAGE_RUN_CODE}/sitemap.xml [L]

これは可能ですか?

私は次のリンクを見ましたが、どれも私がやろうとしていることをしていません

3
jroberts

Mod_rewriteで環境変数を使用するための構文は%{ENV:VARNAME}です。

RewriteRule ^sitemap\.xml$ media/sitemaps/%{ENV:MAGE_RUN_CODE}/sitemap.xml [L]
4
Shane Madden

SetEnv変数は、RewriteRuleに空の文字列を返すだけです。これは、RewriteRuleの実行時に設定されていないためだと思います。ただし、SetEnvIfは機能するため、次のことを試すことができます。

SetEnvIf Request_URI ^.*$ MAGE_RUN_CODE=v2_us_es

そしてそれを以下で使用します:

RewriteRule ^sitemap\.xml$ /media/sitemaps/%{ENV:MAGE_RUN_CODE}/sitemap.xml [L]

SetEnvIfRequest_URI ^.*$ビットは、要求されたページが何かであるかどうかをチェックするだけなので、常に変数を設定します。

おそらく、Apache構成ファイルでRewriteMapとして構成する方が適切でしょう。

2
Al.