2012-05-23 20 views
18

Czy można ustawić zmienną SetEnv w pliku .htaccess w inny sposób, w zależności od nazwy hosta?Warunkowe ustawienie w .htaccess?

Na przykład, muszę mój plik .htaccess mieć następujące wartości:

SetEnv PYRO_ENV production 

Na polach produkcyjnych i ...

SetEnv PYRO_ENV stage 

Na postoju pudełka. Plik .htaccess jest kontrolowany pod względem wersji, dlatego szukam rozwiązania warunkowego.

Odpowiedz

41

przypadku ustawień warunkowych jest SetEnvIf:

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

Tak przydatne dla Magento: 'SetEnvIf Host \ .de MAGE_RUN_CODE = de' (w naszym przypadku mamy wewnętrzne i zewnętrzne adresy URL:' example.de' oraz 'example.de.testing.local') - więc to działa dla obu. – Alex

+0

To jest najlepsza odpowiedź. – Dmitri

22

Można z 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

To jest niesamowite. Dziękuję Ci! Dla innych, którzy mogą natknąć się na tę odpowiedź w przyszłości, można znaleźć więcej dokumentacji na temat ustawiania zmiennych środowiskowych: [ModRewrite Flags Env] (http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_e) i [Zmienne środowiskowe w Apache] (http://httpd.apache.org/docs/2.2/env.html) –

+0

Aby odrzucić: czy trzeba wyjaśniać? – lanzz