mod_rewrite está ativado, mas não está funcionando

17

Estou tentando configurar uma biblioteca de roteamento PHP. Eles dão este exemplo para um arquivo .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Como não consegui fazer isso funcionar, tentei ativar o mod_rewrite, mas diz "Reescrita de módulos já ativada".

Por que não está funcionando corretamente? Obrigado! Estou executando o Ubuntu Precise 12.04 e apache2.2.22. (Verificado se há atualizações)

EDIT: Mais alguns detalhes, é uma compilação vagabunda do PuPHPet, a reescrita deve estar ativada.

Freddy Heppell
fonte

Respostas:

33

Você precisa permitir a substituição.

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>
rechengehirn
fonte
5
Isso é desnecessariamente permissivo. Somente AllowOverrideé necessário para a configuração em questão. Allow from Allnão tem nada a ver com a pergunta e pode não ser apropriado para o ambiente do @ randomdev.
Mark
1
<Directory "/path/to/document/root/">Esqueci de mudar /path/to/document/root/para a raiz do meu projeto.
Abhishek
16

Primeiro, defina sua configuração httpd para isso (o caminho pode diferir um do outro. No meu ubuntu, ele é colocado em / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

Depois disso, você deve ativar o mod_rewrite com este comando:

sudo a2enmod rewrite

O último, reinicie o serviço apache :

sudo service apache2 restart

Para garantir isso, você pode verificá-lo novamente no phpinfo em Configuração> apache2handler> Módulos carregados , deve ser escrito mod_rewritee significa que o mod_rewrite está ativado.

metamorfosear
fonte
Isso deve estar em um elemento de host virtual?
jjxtra 23/06
Você pode ver alguns exemplos no Exemplo de host virtual do Apache
metamorph
1

Eu tive o problema semelhante, mas as outras respostas não me ajudaram. Esta linha no início de .htaccessresolveu meu problema:

Options +FollowSymLinks -MultiViews
Damjan Pavlica
fonte