2012-05-23 39 views
18

根據主機名,是否可以在.htaccess文件中設置不同的SetEnv變量?.htaccess中的條件SetEnv?

例如,我需要我的.htaccess文件有以下值:

SetEnv PYRO_ENV production 

在生產箱,並...

SetEnv PYRO_ENV stage 

在分期盒。 .htaccess文件受版本控制,這是我尋找條件解決方案的原因。

回答

41

對於條件設置有SetEnvIf

SetEnvIf Host ^stage\.example\.com$ PYRO_ENV=stage 
SetEnvIf Host ^(www\.)?example\.com$ PYRO_ENV=production 
+0

對於Magento也非常有用:'SetEnvIf Host \ .de MAGE_RUN_CODE = de'(在我們的例子中,我們有內部和外部URL:'example.de'以及'example.de.testing.local') - 所以這個適用於兩者。 – Alex

+0

這是最好的答案。 – Dmitri

22

您可以與mod_rewrite的:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^stage\.domain\.com$ 
RewriteRule (.*) $1 [E=PYRO_ENV:stage] 

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule (.*) $1 [E=PYRO_ENV:production] 
+3

這是真棒。謝謝!對於將來可能會遇到這個答案的其他人,可以在這裏設置更多的文檔:[ModRewrite Flags Env](http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_e )和[Apache中的環境變量](http://httpd.apache.org/docs/2.2/env.html) –

+0

要downvoter:謹慎解釋? – lanzz