Tornar o Apache mais rápido desactivando os .htaccess no CPanel

Uma forma de tornar o Apache mais rápido é desactivar o suporte a ficheiros .htaccess. Neste artigo vamos aprender como o fazer, mas sem perder a versatilidade que um .htaccess permite.

Comboio Maglev

Os ficheiros .htaccess permitem definir configurações especificas a um determinado domínio sem ser necessário aceder às configurações do servidor em si. Isto é óptimo para ambientes de alojamento partilhado ou servidores privados com vários websites, permitindo configurações independentes para cada domínio.

Mas esta leitura é lenta, o Apache na sua configuração padrão pode recuar vários directórios à procura de um ficheiro .htaccess e aplicar as suas regras. Isto é feito em cada pedido, mesmo com conteúdo estático. Se desactivarmos esta funcionalidade o Apache fica muito mais rápido.

Desactivar é simples, mas queremos manter as regras do mod_rewrite, mod_expires e afins. Estes são os passos que segui para o fazer num servidor com CPanel, mas existem outras formas de o fazer.

Desactivar o .htaccess

Através do WHM do CPanel se acedermos a Apache Configuration > Include Editor vamos editar o ficheiro post_virtualhost_global.conf onde vamos colocar as nossas configurações. Este ficheiro não é rescrito na actualização do Apache, sendo através do CPanel o método ideal em vez de editar os ficheiros do Virtual Host directamente via SSH.

Neste ficheiro vamos colocar os apontadores para os nossos ficheiros .htaccess

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Regras gerais
<Directory "/">
	IndexIgnore *
	AllowOverride none
</Directory>

# Regras separadas por directório, por site
<Directory "/home/username/public_html/">
	IncludeOptional /home/username/public_html/.htacces[s]
</Directory>

<Directory "/home/outrousername/public_html/">
	IncludeOptional /home/outrousername/public_html/.htacces[s]
</Directory>

Explicando o código, no directório inicial “/” vamos aplicar as regras comuns a todo o servidor, neste caso remover os indexes das pastas sem ficheiros index e desactivar o .htaccess com o AllowOverride como none.

Depois para cada pasta de cada site que temos vamos criar uma entrada onde colocamos o ficheiro .htaccess.

O ficheiro é incluído sempre dentro de um parâmetro Directory. Assim em caso de erro no ficheiro ou um ataque apenas vamos afectar aquele domínio.

Usa-se o IncludeOptional com um pequeno truque que encontrei no Stack Overflow para que seja verificado um padrão no nome do ficheiro, desta forma se o ficheiro for eventualmente eliminado não ocorrem erros de configuração e o Apache continua a funcionar.

Se pretenderem também podem copiar o conteúdo do ficheiro .htaccess para aqui, mas desta forma o conteúdo fica separado em ficheiros por cada site, torna-se mais fácil a sua gestão e mantém-se a compatibilidade com algumas funcionalidades do CPanel ou scripts como o WordPress.

Porque é mais rápido desta forma?

Ao contrário de um ficheiro .htaccess carregado pela forma convencional, onde as regras são interpretadas e aplicadas sempre que é feito um pedido (mesmo em conteúdo estático), aqui as regras são carregadas e interpretadas quando o Apache inicia, ficando em memória.

Removemos assim o processo de verificar várias pastas à procura de ficheiros .htaccess e a leitura dos mesmos.

Pontos a ter em conta

Desta forma continua a ser possível usar ficheiros .htaccess, mas o modo de funcionamento não é igual.

Como indiquei os ficheiros são lidos quando o Apache arranca, isto quer dizer que podemos remover ou editar estes ficheiros e as novas regras apenas são aplicadas se reiniciarmos o serviço. Dependendo do sistema operativo onde estamos a correr podemos forçar via SSH o carregamento das regras com um reload.

 
Copyright © 1985 - 2017 Eduardo Maio. Alguns direitos reservados.
eduardomaio.net - Às vezes mais valia ser Agricultor do que Programador
Ao navegar no blog eduardomaio.net está a concordar com os termos legais e de privacidade.