2012-12-21 18 views
9

Mam następującą linię w moim pliku .htaccess wybrać, która wersja PHP używać:.htaccess if

AddType x-httpd-php53 .php 

Działa to doskonale w środowisku na żywo, ale nie odnosi się do środowiska testowego i łamie teren.

Czy istnieje sposób, w jaki mogę umieścić go w instrukcji if lub na podstawie adresu IP serwera lub adresu URL strony internetowej lub czegoś takiego, aby działał on tylko w środowisku na żywo?

+0

Jaka jest różnica między środowiskiem testowym i na żywo? Jak są skonfigurowane w Apache? A co najważniejsze, jak to się psuje? Co zawiera błąd error_log? –

Odpowiedz

16

Z Apache 2.4, to łatwo z <If>/<Else> dyrektyw (na %{HTTP_HOST}?).

<If "%{HTTP_HOST} == 'foo'"> 
    # configuration for foo 
</If> 
<Else> 
    # default configuration 
</Else> 

Dla Apache 2.2 i wcześniej, chciałbym dodać parametr do linii komend startowych Apache (-D opcja) w jednym z dwóch środowisk następnie sprawdzić, czy jest on obecny lub nie poprzez <IfDefine>.

Aby to zrobić w systemie Windows, z Apache rozpoczął jako usługa, należy zmodyfikować klucz rejestru HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache2.<VERSION>\ImagePath
dołączając -DFOO. Następnie można napisać:

<IfDefine FOO> 
    # configuration for foo 
</IfDefine> 
<IfDefine !FOO> 
    # default configuration 
</IfDefine> 
2

Inną alternatywą może zrobić, to zmienić httpd.conf w środowisku testowym, aby użyć ".htaccess test" zamiast ".htaccess".

To jest po prostu zrobić modyfikując httpd.conf i dodając następującą linię poza jakimkolwiek bloku:

AccessFileName .htaccess-test 

UWAGA: Można dodać AccessFileName wewnątrz <VirtualHost> bloku jeśli chcesz zastosować je do konkretny VirtualHost.

Co oznacza, że ​​środowisko testowe będzie używać .htaccess-test, podczas gdy środowisko produkcyjne będzie używać .htaccess. Dzięki temu można swobodnie konfigurować każde środowisko osobno.

Następnie utwórz plik o nazwie .htaccess-test przylegający do .htaccess. Zmodyfikuj .htaccess-test za pomocą konfiguracji testowej, a następnie zrestartuj serwer WWW Apache na serwerze środowiska testowego.