Esta é uma maneira correta de ativar o htaccess no Apache 2.4.7 no Ubuntu 12.04?

39

Em quase todas as soluções de "Como ativar o htaccess", eles dizem que o arquivo / etc / apache2 / sites-available / default precisa ser editado. Mas não existe tal arquivo no Apache 2.4.7

Eu li em algum lugar que o novo arquivo padrão é 000-default.conf. Então eu editei esse e tentei adicionar a linha:

AllowOverride All

Mas o Apache2 não reiniciou corretamente e deu um erro. De uma documentação do apache2, descobri que AllowOverride só é permitido na seção <Directory> . Então eu tentei adicionar isso:

<Directory "/var/www">
AllowOverride All
</Directory>

E isso parece funcionar. Mas não tenho certeza se deveria ter colocado / var / www ali. É uma maneira correta de fazer isso ou meu computador explodirá de alguma forma?

Obrigado.

    
por CluelessNoob 05.03.2014 / 15:54

3 respostas

51

tl; dr

Sim, é a maneira correta.
Mas para ser mais semântico : Sim, é a maneira correta de permitir que .htaccess substitua todas as diretivas no diretório /var/www .

Como você descobriu, AllowOverride é permitido somente sob Directory seção.

Usando seu exemplo:

<Directory "/var/www">
    AllowOverride All
</Directory>

Isto está dizendo ao apache, que todas as configurações podem ser sobrescritas no /var/www e em todos os seus subdiretórios (recursivamente).

Para um melhor exemplo, considere que você tem a seguinte configuração em seu host virtual:

<Directory "/var/www">
    AllowOverride All
</Directory>

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

E a seguinte estrutura de diretórios:

var/
    www/
        .htaccess
        uploads/
            .htaccess
            a/
                .htaccess
            b/
                .htaccess
        code/
            .htaccess
            c/
                .htaccess
            d/
                .htaccess

O que eu fiz aqui, é criar um .htaccess em todos os subdiretórios do diretório /var/www . Geralmente não deveria ser assim, mas isso é apenas para o causa do exemplo

Comparando a estrutura de diretórios com a configuração, isso significa que todos os arquivos .htaccess dentro da pasta /var/www e seus subdiretórios, excluindo o diretório /var/www/uploads e seus subdiretórios, podem substituir todos os tipos de diretivas .

Mas /var/www/uploads e seus subdiretórios só podem usar o arquivo .htaccess para substituir as diretivas Allow , Deny e Order .

Nota: A partir do apache 2.4 (que está disponível por padrão no 13.10+), as diretivas Allow , Deny e Order foram substituídas por uma única diretiva denominada Require .

    
por Dan 05.03.2014 / 17:54
33

Primeiro habilite a reescrita usando este comando:

sudo a2enmod rewrite

Em seguida, reinicie o apache2:

sudo service apache2 restart

Em seguida, vá para a pasta sites-available :

/etc/apache2/sites-available

Edite o arquivo chamado default e altere AllowOverride none para AllowOverride All . Existem duas linhas em que essa alteração deve ser feita.

Isso fará o .htaccess funcionar no servidor VPS.

Isso funcionou em um VPS Ubuntu 12.04.5.

    
Os arquivos
por q8fft 09.08.2014 / 12:13
2

No meu caso, funcionou assim:
Eu tive que adicionar as seguintes linhas:

Order allow, deny
Allow from all

Então parece com isso:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
    
por Prof. Chagas 26.01.2017 / 21:42