Apache: Desativa * análise * do htaccess no webdav

4

Eu tenho o seguinte layout de diretório:

/var/www/
    example.com/
        logs/
        html/
        stuff/

O Apache está configurado para atender normalmente a partir de /var/www/example.com/html

Eu configurei o webdav para trabalhar com o url https://example.com/server-admin e também permitir acesso aos outros diretórios:

<VirtualHost>
...
    Alias /server-admin /var/www/example.com/  
    <Location /server-admin >  

        Dav on

        AllowOverride None
        ...

Com AllowOverride None , quero desativar os arquivos htaccess para que eles não interrompam a operação do webdav.

Esse tipo de trabalho. Mas : se eu fizer o upload de um arquivo htaccess quebrado sintaticamente, tudo se desintegrará com um erro interno de 500 servidores. Eu acho que mesmo assim o arquivo não é usado, o apache ainda o analisa.

Então, tentei usar AccessFilename .davaccess para alterá-lo para outro nome, que funciona, mas não em <Location> , mas apenas globalmente em <VirtualHost> .

Então, o que fazer? Como desabilitar o htaccess em um <Location> ou como devo alterar o layout para que isso funcione?

    
por Scheintod 12.01.2017 / 14:41

1 resposta

3

Você precisará usar um contêiner <Directory> em vez de um contêiner <Location> para aplicar a diretiva AllowOverride . Embora a diretiva AllowOverride tenha o contexto "diretório" (o que significa que normalmente seria permitido nos contêineres <Location> e <Directory> , etc.), há um restrição específica que declara:

The AllowOverride directive works only in <Directory> sections.

Isso parece ser razoável, pois os arquivos .htaccess se aplicam a diretórios físicos, não a URLs estritamente (embora os URLs geralmente sejam mapeados para diretórios físicos). (O contêiner <Directory> também é processado muito antes na solicitação. <Location> contêineres são processados com atraso.)

A propósito, você também precisa definir AllowOverrideList None no Apache 2.4 para desativar completamente os arquivos .htaccess . E de acordo com a os documentos para AllowOverride :

When this directive is set to None and AllowOverrideList is set to None, .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.

Atualmente não vejo como .htaccess (arquivos de configuração por diretório) pode ser condicionalmente habilitado para uma área do sistema de arquivos (sob um único host virtual). Eles estão habilitados ou não.

Referência:

UPDATE: A solução / solução para isso é provavelmente ter um VirtualHost completamente separado (talvez o mesmo host , mas diferente port ? ) apenas para WebDAV que aponta para a mesma área do sistema de arquivos, em que .htaccess estão completamente desativados. No entanto, os arquivos de ponto (principalmente .htaccess e .htpasswd ) também são protegidos por padrão, portanto, seria necessário substituir isso, se necessário, para permitir acesso de leitura.

    
por 12.01.2017 / 16:00