Como habilitar o uso de .htaccess no Apache no Ubuntu?

15

Estou tentando habilitar o uso do arquivo htaccess no Ubuntu 14.04 (Apache 2.4.7). Eu sei que esta pergunta tem muitas duplicatas possíveis, mas nenhuma delas me ajudou ainda.

.htaccess

ErrorDocument 404 /404.html

000-default.conf

<VirtualHost *:80>
AccessFileName .htaccess

ServerAdmin webmaster@localhost
DocumentRoot /var/www

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

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

O que mais é necessário?

David ZIP
fonte
1
A diretiva AllowOverride All permite todas as opções no arquivo .htaccess. O 000-default.conf assume que há apenas um site no seu servidor. O arquivo .htaccess não está funcionando para você? Há mais de um site hospedado neste servidor?
closetnoc
Existem muitas pastas em / var / www, mas nenhum host virtual é criado. A pasta / etc / apache2 / sites-available / contém dois arquivos, 000-default.conf e default-ssl.conf. htaccess está localizado em / var / www /
David ZIP
Talvez 'DocumentRoot / var / www /'? (barra final)
Kovah
Verifique se / etc / apache2 / sites-enabled / contém um link para 000-default.conf. Se você alterar o arquivo /var/www/index.html, poderá ver as alterações quando visualizar o servidor com um navegador da Web, certo?
Stephen Ostermiller

Respostas:

26

Primeiro passo

Abrir arquivo como

sudo vim /etc/apache2/apache2.conf

Segundo passo

remova o sinal de comentário (#) se o encontrar antes desta linha (número da linha 187 aprox.)

AccessFileName .htaccess

Terceiro passo

Então encontre a linha onde há

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

substitua "Nenhum" por "Todos"

AllowOverride All

E pronto ... .htaccessfunciona !!

Anil
fonte
3
mudanças não terão efeito até que eu reiniciado apache Comando: serviço apache restart
Tahir Yasin
1
Sugiro, como menciona @TahirYasin, reiniciar o apache. sudo service apache2 restart.
www139
7

Ative o ModRewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Eder Araujo de Souza
fonte
1
O servicecomando agora é a maneira preferida para reiniciar Apache: sudo service apache2 restart.
Stephen Ostermiller
1

No meu caso a mudança AllowOverride Nonepara AllowOverride Allem /etc/apache2/sites-enabled/000-default.conf ajudou.

Todos os outros arquivos .conf já tiveram AllowOverride All.

Lyubov Zhurba
fonte
0
  1. Em /etc/apache2/apache2.conf, remova o sinal de comentário ( #) deAccessFileName .htaccess
  2. O nome do seu arquivo de configuração do Apache não é padrão. Você pode renomeá-lo para default.conf no Windows e renomeá-lo para o padrão no Linux. No sistema operacional Linux, execute este código no terminal:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default
    
Huseyin
fonte
É nomeado com zeros para que seja o primeiro em ordem alfabética. Se você tiver um arquivo default.conf e criar um site para anteater.com, o anteater se tornará o host padrão porque ele será carregado primeiro. Mantenha os 000 para evitar esses problemas. O nome do arquivo conf não deve ter nada a ver com o fato de o .htaccess funcionar ou não.
Stephen Ostermiller
1
'AccessFileName .htaccess' já está descomentado. A resposta acima me ajudou. Obrigado.
David ZIP