
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 .htaccess
a substituição de todas as diretivas no /var/www
diretório.
Como você descobriu,AllowOverride
é permitido apenas na Directory
seçã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/www
e 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 .htaccess
em cada subdiretório do /var/www
diretó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 .htaccess
os arquivos dentro da /var/www
pasta e seus subdiretórios, excluindo o /var/www/uploads
diretório e seus subdiretórios, podem substituir todos os tipos de diretivas.
Mas /var/www/uploads
e seus subdiretórios só podem usar o .htaccess
arquivo para substituir as Allow
diretivas Deny
e Order
.
Nota: A partir do Apache 2.4 (que está disponível por padrão em 13.10+), as diretivas Allow
, Deny
e Order
foram 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-available
pasta:
/etc/apache2/sites-available
Edite o arquivo nomeado default
e mude AllowOverride none
para AllowOverride All
. Existem duas linhas onde essa mudança deve ser feita.
Isso fará com que .htaccess
funcione 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.