Posso ter instruções condicionais, baseadas no servidor, no arquivo .htaccess?

2

Eu tenho um servidor dev e um servidor ativo, ambos executando meu site no Apache. No meu arquivo .htaccess, além de muitos comandos mod_rewrite e outras coisas importantes, eu também tenho o controle de acesso Auth para o servidor live. (O servidor de desenvolvimento está no meu Mac local, então não preciso dele ...)

Neste momento, é difícil sincronizar o .htaccess com o servidor live, já que não posso simplesmente copiar o meu arquivo .htaccess (que sobrescreveria os comandos Auth), então eu tenho que editar manualmente o live.

Existe uma maneira de ter uma condicional no arquivo .htaccess? Estou imaginando algo como:

<On Live_Server>
  AuthName "Restricted Area"
  AuthType Basic
  AuthUserFile /home/lmiv/.htpasswds/.htpasswd 
  Require valid-user
</on>
    
por Eric 08.03.2012 / 00:06

1 resposta

2

Muito perto, sim. Você pode usar um bloco <IfDefine> para isso. Isso requer que você inicie o Apache com uma diretiva -D adicional, o argumento para o qual se torna disponível em qualquer lugar na configuração do Apache. Por exemplo, se você adicionar -DLive_Server às opções de linha de comando em produção, poderá fazer isso em sua configuração em todos os ambientes:

<IfDefine Live_Server>
  AuthName "Restricted Area"
  AuthType Basic
  AuthUserFile /home/lmiv/.htpasswds/.htpasswd 
  Require valid-user
</IfDefine>

Você também pode fazer o inverso e definir algo como -DDev_Server em seu ambiente de desenvolvimento e inverter a correspondência:

<IfDefine !Dev_Server>

Eu prefiro o último, já que ele requer menos configuração "especial" para o ambiente de produção, e não requer que você reinicie a instância de produção apenas para obter o -D adicionado à linha de comando.

    
por 08.03.2012 / 06:00