Por que eu não posso desativar .htaccess no Apache?
-
03-07-2019 - |
Pergunta
Este é o problema oposto da maioria sobre o que eu li. Estou executando o Ubuntu 8.04 em uma instância Amazon com o Apache 2.2.8 e eu não consigo descobrir por que a configuração AllowOverride para Nenhum para o root não pára meu arquivo .htaccess sejam incluídos.
Eu tenho um sub-diretório com hello.py nele e um arquivo .htaccess. Quando eu procurar o arquivo, ele funciona bem com versão ModPython servindo o arquivo. Se eu colocar algum lixo no .htaccess recebo um erro de servidor, então eu sei o arquivo .htaccess está sendo usado. Além disso, se eu excluir o arquivo .htaccess, hello.py não é mais servidor versão ModPython -. Em vez as tentativas do navegador para abri-lo
Em um dos meus sites-available (ligada em sites-enabled), eu tenho "AllowOverride None" para o diretório raiz. Eu pensei que isso impediria .htaccess seja incluído de raiz e todos os seus sub-diretórios que deve causar hello.py não para ser servido por mod_python. No entanto, continua a ser servido bem e eu posso testar se .htaccess ainda está sendo incluída porque quando eu modificá-lo, eu vejo os resultados no meu navegador.
Talvez haja algo que eu não estou entendendo sobre o meu arquivo em sites de habilitado. Este é o arquivo que estou usando:
NameVirtualHost *:8080
<VirtualHost *:8080>
<Directory />
AllowOverride None
</Directory>
</VirtualHost>
Obrigado por qualquer ajuda.
Solução
A razão o arquivo não é servido via mod_python quando você exclui .htaccess é porque a configuração para mod_python está localizado na mesma. Se você mover esse material para arquivar seus sites-available, você pode excluir .htaccess, fechar os olhos para o problema, e chamá-lo um dia.
Se isso não satisfazê-lo, então por que motivo .htacess está sendo lido em tudo, eu não posso dizer. Está certo que AllowOverride None deve impedir que o arquivo já está sendo lido. Já considerou a possibilidade de que você errou alguma coisa ao adicionar o site virtual? Tente jogar algum lixo na config e ver se ele se queixa, só para ter certeza de que ele está sendo lido em tudo.
Outras dicas
AllowOverride
só é permitido em <Directory>
-seções, de modo que você fez tudo certo.
Um problema que você pode ter é que outras (sub-) <Directory>
-seções definir AllowOverride
a diferentes algo que None
. Que irá substituir a configuração para esses subdiretórios.
Eu uso
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
</Directory>
e em /var/www
(meu docroot) eu posso usar .htaccess
es.
A razão pela qual mod_python
não funciona mais se você excluir seu .htaccess
é que a instalação mod_python
é geralmente em arquivos .htaccess
.
Se precisar de mais informações, por favor envie-nos a sua configuração.
PS: Na verdade, a docuementation ligada acima diz que você deve não set AllowOverride
para algo não None
em <Directory />