mod_rewrite è abilitato, ma non funziona


17

Sto cercando di configurare una libreria di routing PHP. Danno questo esempio per un file .htaccess:

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

Non sono riuscito a farlo funzionare, quindi ho provato ad abilitare mod_rewrite, ma dice "Riscrittura modulo già abilitata".

Perché non funziona correttamente? Grazie! Sto eseguendo Ubuntu Precise 12.04 e apache2.2.22. (Controllato per eventuali aggiornamenti)

EDIT: un altro paio di dettagli, è una build vagrant di PuPHPet, la riscrittura dovrebbe essere abilitata.

Risposte:


33

Devi consentire la sovrascrittura.

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>

5
Questo è inutilmente permissivo. È AllowOverridenecessario solo per la configurazione in questione. Allow from Allnon ha nulla a che fare con la domanda e potrebbe non essere appropriato per l'ambiente di @ randomdev.
Segna il

1
<Directory "/path/to/document/root/">Ho dimenticato di passare /path/to/document/root/alla radice del mio progetto. Grazie!
Abhishek,

16

Prima di tutto, imposta la tua configurazione httpd su questo (il percorso potrebbe differire tra loro. Nel mio ubuntu è posizionato in / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

Successivamente, è necessario abilitare mod_rewrite con questo comando:

sudo a2enmod rewrite

L'ultimo, riavvia il servizio apache :

sudo service apache2 restart

Per assicurarti che, puoi ricontrollarlo da phpinfo in Configurazione> apache2handler> Moduli caricati, devi scrivere mod_rewritee significa che mod_rewrite è abilitato.


Questo dovrebbe essere in un elemento host virtuale?
jjxtra,

Puoi vedere alcuni esempi in Apache Virtual Host Example
metamorph

1

Ho avuto il problema simile, ma le altre risposte non mi hanno aiutato. Questa riga all'inizio ha .htaccessrisolto il mio problema:

Options +FollowSymLinks -MultiViews
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.