Como habilitar o mod_rewrite no Apache?

165

Acabei de instalar a pilha LAMP no meu sistema Ubuntu.

O redirecionamento não está funcionando para mim. Eu não sei como consertar isso. Alguém pode me ajudar?

vinoth
fonte
3
IMHO esta pergunta não é específica do Ubuntu e deve ser migrada para a falha do servidor .
Paolo
2
O OP instalou a lâmpada no UBUNTU. Quanto mais específico do Ubuntu você deseja?
Wojox
1
@ wojov: Eu não sei sobre esse caso, mas esse argumento não funciona. "Como posso usar este aplicativo (no Ubuntu)?" são principalmente fora de tópico.
23
Este não é um "Como posso usar o aplicativo", mas um "como habilitar um recurso específico no Ubuntu". O Apache no Ubuntu usa um layout de configuração diferente, no qual cada módulo e host virtual está em um arquivo /etc/apache2e pode ser ativado usando a2*programas.
Lekensteyn
Você deve descrever o que você fez para diminuir o problema.
ericn

Respostas:

239

Para habilitar o módulo de reescrita, execute "apache2 enable module rewrite":

sudo a2enmod rewrite

Você precisa reiniciar o servidor da web para aplicar as alterações:

sudo service apache2 restart

Se você planeja usar mod_rewrite em .htaccessarquivos, também precisa habilitar o uso de .htaccessarquivos alterando AllowOverride Nonepara AllowOverride FileInfo. Para o site padrão, edite /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Após essa alteração, você precisará reiniciar o Apache novamente.

Lekensteyn
fonte
18
Eu tinha mais sucesso com AllowOverride All
Valentin Despa
Obrigado! sudo a2enmod rewritee FileInfoconsertou para mim!
d -_- b
22
Para mim, esse arquivo foi /etc/apache2/apache2.conf onde eu achei que a entrada de configuração
doc_id
Sim, faça as duas alterações corrigidas o problema.
Adelin
Não está funcionando para mim. Eu postei uma pergunta aqui askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta
49

Atrevo-me a adicionar uma resposta especial (como acompanhamento da ótima resposta acima) sobre o ubuntu 14.04 e .htaccess:

Na 14.04, o nome do arquivo de configuração padrão é alterado para 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

adicione o seguinte ao final do arquivo:

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

Por alguma razão, no Ubuntu 14.04 e apache2, a raiz está definida como /www/html. Se você deseja alterar a raiz do servidor da web para antiga /www, open 000-default.confe alterar

DocumentRoot /var/www/html/

para

DocumentRoot /var/www/

e depois, claro, deve ser

<Directory "/var/www">
    AllowOverride All
</Directory>
davidkonrad
fonte
1
Obrigado pela informação! Desta maneira / nova, podemos usar www como pasta onde colocamos todos os sites, e o html é por padrão "site" para localhost. Pode ser importante se você estiver jogando com a abertura de portas para o mundo - para que seu host local não veja pastas de outros projetos.
Vladimir Vukanac
1
Não está funcionando para mim. Estou usando # Ubuntu 14.04.4 LTS
Suhail Gupta