Esta é uma maneira correta de habilitar o htaccess no Apache 2.4.7

Esta é uma maneira correta de habilitar o htaccess no Apache 2.4.7

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

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

AllowOverride All

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

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

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

Responder1

dr.

Sim, é a maneira correta.
Mas para ser maissemântico: Sim, é a maneira correta de permitir .htaccessa substituição de todas as diretivas no /var/wwwdiretório.


Como você descobriu,AllowOverrideé permitido apenas na Directoryseção.

Usando seu exemplo:

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

Isso diz ao Apache que todas as configurações podem ser substituídas no /var/wwwe em todos os seus subdiretórios (recursivamente).


Para um exemplo melhor, 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 fiz aqui foi criar um .htaccessem cada subdiretório do /var/wwwdiretório.
Geralmente não deveria ser assim, mas isso é apenas para fins de exemplo

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

Mas /var/www/uploadse seus subdiretórios só podem usar o .htaccessarquivo para substituir as Allowdiretivas Denye Order.

Nota: A partir do Apache 2.4 (que está disponível por padrão em 13.10+), as diretivas Allow, Denye Orderforam substituídas por uma única diretiva chamada Require.

Responder2

Primeiro habilite a reescrita usando este comando:

sudo a2enmod rewrite

Então reinicie o apache2:

sudo service apache2 restart

Então entre na sites-availablepasta:

/etc/apache2/sites-available

Edite o arquivo nomeado defaulte mude AllowOverride nonepara AllowOverride All. Existem duas linhas onde essa mudança deve ser feita.

Isso fará com que .htaccessfuncione no seu servidor VPS.

Isso funcionou em um Ubuntu 12.04.5 VPS.

Responder3

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

Order allow, deny
Allow from all

Então é assim:

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

Responder4

Um problema comum que encontrei nesses tutoriais é que não há arquivo default.conf no

/etc/apache2/sites-available

Consegui encontrar o local para alterá-lo, mas era o arquivo apache2.conf aqui

/etc/apache2/apache2.conf

Não tenho certeza se isso é uma boa ideia, mas funcionou para mim e no ambiente em que estou é seguro.

informação relacionada