Estou tentando adicionar uma declaração condicional usando a diretiva If do Apache no meu arquivo .htaccess.
Eu referenciei esta página http://httpd.apache.org/docs/trunk/mod/core.html#if, mas ela não elabora muito / dá muitos exemplos. Dois exemplos incompletos são:
<Se% {REQUEST_METHOD} EM GET, HEAD, OPTIONS>
e
<Se "$ req {Host} = ''">
Então, eu tentei adicionar isso ao meu arquivo .htaccess:
<Se% {SERVER_PORT} EM OBTER, CABEÇA, OPÇÕES> #nada aqui ainda </If>
Mas continuo recebendo o Erro 500 ao tentar carregar a página. Isso está na minha instalação local e estava funcionando bem anteriormente (ou se eu remover esse código). Eu acredito que AllowOverride All
configurei globalmente, e o contexto da diretiva If deve deixá-la presente em .htaccess ("Contexto: configuração do servidor, host virtual, diretório, .htaccess").
Alguém pode me dar alguns exemplos de como usar corretamente a diretiva <If>, ou alguma orientação sobre por que ela não está funcionando para mim?
Obrigado!
SERVER_PORT
inGET,HEAD,OPTIONS
não faz nenhum sentido (SERVER_PORT
será o número da porta numérica na qual a solicitação foi recebida).Respostas:
A
<If>
diretiva está disponível apenas no Apache 2.4+ e não 2.2 ou anterior.http://httpd.apache.org/docs/2.4/mod/core.html#if
Documentação não presente em 2.2:
http://httpd.apache.org/docs/2.2/mod/core.html#if
fonte
<If>
está disponível apenas no Apache 2.4+, portanto, verifique se você possui essa versão.Exemplos
Alternativas para
<If>
Existem algumas outras soluções para fazer declarações condicionais no Apache 2.2, se você ainda está preso a isso.
Você pode definir variáveis de ambiente através de:
SetEnvIf
RewriteMatch
Em seguida, você pode executar instruções condicionais usando
Exemplo:
fonte
<IfDefine>
diretiva analisa apenas na inicialização e oparameter-name
is only pode passar pelo prompt de comando usando #httpd -Dx=y