Mover as regras do htaccess para os arquivos de configuração do apache

2

Estou rodando um site com o Joomla em um servidor dedicado (Debian), e li que mover as regras do .htaccess para os arquivos de configuração do apache2 pode resultar em uma boa melhoria de desempenho ( Tutorial do Apache HTTP Server: arquivos .htaccess ).

Arquivo de configuração principal em / etc / apache2: apache2.conf

No apache2.conf há, entre outras diretivas, que eu sou capaz de entender:

AccessFileName .htaccess

e

Include sites-enabled/

O servidor hospeda apenas um site. Em sites habilitados, há outro arquivo, incluindo diretivas adicionais, 000-default:

 DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

A execução de um "locate .htaccess" através do shell retorna alguns resultados: 2 arquivos sob / usr / share / phpmyadmin / e outros resultados sob os diretórios do site: / var / www.

Eu li como usar o bloco Directory para incluir regras de htaccess em um arquivo de configuração do Apache, mas tenho basicamente três dúvidas:

1) Onde devo inserir as regras do htaccess, no apache2.conf ou no 000-default?

2) Como as melhorias de desempenho são devidas à redução de pesquisas do apache para arquivos htaccess no diretório principal e em subdiretórios, qual diretiva devo modificar?

AccessFileName .htaccess

ou

AllowOverride All

ou ambos? E sobre AllowOverride All, em qual bloco de diretório em 000-default?

3) Depois de desabilitar AllowOverride All, devo incluir as diretivas do htaccess para / usr / share / phpmyadmin também, mesmo com instruções DocumentRoot / var / www?

    
por Zikyi 22.05.2016 / 18:37

1 resposta

0

Para responder à pergunta 1, duas respostas:

1) não importa. Os arquivos são mesclados em uma única configuração na memória na inicialização. Coloque a configuração onde faz mais sentido para você, o administrador do servidor. Para citar o bot do IRC em #httpd:

Todos os arquivos de configuração são criados iguais. Não importa qual dos arquivos de configuração você colocar a diretiva. O que importa é se você colocá-lo na seção apropriada (ou, por exemplo). Coloque diretivas em algum lugar que faça sentido para você e onde você possa encontrá-las da próxima vez.

2) Provavelmente coloque-o no host virtual, (ou seja, em 000-default, dentro do bloco, porque é provavelmente onde faz mais sentido, e será aplicado ao escopo onde você quer.

Pergunta 2: altere 'AllowOverride All' para 'AllowOverride None'. Além disso, nunca, nunca, defina 'AllowOverride All' como você tem lá no seu exemplo. Isso diz "ativar arquivos .htaccess para o sistema de arquivos inteiro , que claramente não é o que você quer, por razões de segurança e desempenho. Então, mesmo quando você está usando arquivos .htaccess para algo, ele ainda deve ser definido como 'None'. Lembre-se, consulte o diretório real do sistema de arquivos '/', não o diretório raiz do documento da Web.

Pergunta 3: Depois de definir 'AllowOverride None', os arquivos .htaccess serão completamente ignorados. Quaisquer diretivas devem ser movidas para a configuração principal. No entanto, não estou totalmente claro o que você está perguntando na pergunta 3. Você pode elaborar?

    
por 30.09.2016 / 19:14