O que o IfModule faz no .htaccess?

3
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType application/javascript "access 1 week"
    ExpiresByType text/css "access 1 week"
</IfModule>

Eu uso muito desses arquivos em meus arquivos .htaccess para definir caching, deflate, Accept-encoding headers e outras coisas. Eu observei que, se eu excluir as tags de abertura e fechamento, tudo continuará funcionando. O que eles fazem, e é seguro excluí-los, desde que tudo pareça estar funcionando corretamente?

    
por twharmon 20.10.2016 / 12:51

2 respostas

3

<IfModule> é simplesmente uma diretiva que testa a condição "é o módulo nomeado carregado pelo apache httpd" (no seu exemplo mod_expires). Permite que as pessoas produzam uma configuração baseada em condicional para diferentes instalações onde determinados módulos podem estar presentes ou não.

A melhor prática é não usá-lo, a menos que seja necessário. Idealmente, você deve saber quais módulos seu servidor da Web carrega e, assim, quais diretivas de configuração estão disponíveis.

Você sempre pode verificar se os módulos que o servidor da Web está carregando usando apachectl -M e apachectl configtest antes de reiniciar o servidor da web devem revelar as diretivas que você usou sem carregar o módulo relevante.

    
por 20.10.2016 / 13:08
1

Ele inclui diretivas que só serão aplicadas se um módulo específico estiver disponível no servidor. O módulo deve ser estaticamente compilado no servidor ou deve ser compilado dinamicamente e sua LoadModule line deve ser anterior no arquivo de configuração. Esta diretiva só deve ser usada se você precisar que seu arquivo de configuração funcione, quer os módulos estejam instalados ou não. Ele não deve ser usado para incluir diretivas que você deseja trabalhar o tempo todo, porque ele pode suprimir mensagens de erro úteis sobre módulos ausentes.

No exemplo a seguir, a diretiva MimeMagicFile será aplicada somente se mod_mime_magic estiver disponível.

<IfModule mod_mime_magic.c>
  MimeMagicFile "conf/magic"
</IfModule>
    
por 20.10.2016 / 13:10