Como habilitar mod_rewrite para host virtual


8

A regra mod_rewrite não está funcionando no host virtual. Eu queria isso para cakephp.

Existe configuração para adicionar no arquivo host virtual?

Respostas:


21

Se você estiver usando a versão mais recente do apache 2.4+, aqui está o processo de habilitação do mod_rewrite.

Vá para etc/apache2/
Abrir apache2.confusando seu editor de texto favorito.
mudança

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

para

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

Então salve. Lembre-se de que você deve ter permissão de root para editar e salvar este arquivo.
Agora reinicie o apache.

service apache2 reload

Este processo habilitará o mod_rewrite para o servidor apache, incluindo host virtual.

Você também pode verificar se está ativado ou não. Crie um script php

<?php    
phpinfo();    
?>

Carregue-o do servidor. Na Loaded Modulesseção, verifique se mod_rewriteexiste ou não. Se estiver lá, está ativado.


Antes de usar esta opção, todas as minhas reescritas terminavam em 404, no entanto, depois de atualizar apache2.confe reiniciar o apache404 desapareceu, mas todas as páginas voltaram à página inicial! phpinfo()também não tinha o mod_rewritemódulo ativado. Em seguida, executando o comando CLI (como sugerido por Lonston abaixo) tudo ficou dourado! Por que esta solução não mod-rewriteativou o módulo para mim, mas o approad da CLI? Isso é uma combinação de modificar .confe executar o comando da CLI um após o outro para ativar o módulo ou qualquer um deles é realmente suficiente?
Niladri Sarkar

6

Ative a reescrita usando

# sudo a2enmod rewrite

Em seguida, reinicie o apcahe2 usando

# service apache2 restart

Ative no Virtualhost adicionando

AllowOverride FileInfo

Em seguida, reinicie o apcahe2 usando

# service apache2 restart

exemplo :

<Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # I Have below line from none to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Isso funcionou para mim também!
Niladri Sarkar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.