在 htaccess 重写规则中使用 SetEnv 变量

在 htaccess 重写规则中使用 SetEnv 变量

在我们的httpd.conf虚拟主机块中我们有

SetEnv MAGE_RUN_CODE "v2_us_es"

是否可以在.htaccess文件中使用该变量

就像是

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

这可能吗?

我查看了以下链接,但它们都没有实现我想要的功能

答案1

在 mod_rewrite 中使用环境变量的语法是%{ENV:VARNAME}

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

答案2

SetEnv变量在 中只返回空字符串。我认为这是因为在执行RewriteRule时尚未设置它们。但可以工作,因此您可以尝试:RewriteRuleSetEnvIf

SetEnvIf Request_URI ^.*$ MAGE_RUN_CODE=v2_us_es

然后使用它:

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

Request_URI ^.*$中的位只是SetEnvIf检查所请求的页面是否有东西,所以总是设置变量。

它可能最好配置为RewriteMapApache 配置文件中。

相关内容