mod_rewrite est activé, mais ne fonctionne pas


17

J'essaie de configurer une bibliothèque de routage PHP. Ils donnent cet exemple pour un fichier .htaccess:

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

Je n'ai pas pu faire fonctionner cela, j'ai donc essayé d'activer mod_rewrite, mais il dit "La réécriture du module est déjà activée".

Pourquoi ne fonctionne-t-il pas correctement? Merci! J'utilise Ubuntu Precise 12.04 et apache2.2.22. (Vérifié pour toutes les mises à jour)

EDIT: Quelques détails supplémentaires, c'est une construction vagabonde PuPHPet, la réécriture devrait être activée.

Réponses:


33

Vous devez autoriser l'écrasement.

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

5
C'est inutilement permissif. Seul AllowOverrideest nécessaire pour la configuration en question. Allow from Alln'a rien à voir avec la question et peut ne pas convenir à l'environnement de @ randomdev.
Mark

1
<Directory "/path/to/document/root/">J'ai oublié de passer /path/to/document/root/à la racine de mon projet. Merci!
Abhishek

16

Tout d'abord, définissez votre configuration httpd sur ceci (le chemin peut différer les uns des autres. Dans mon ubuntu, il est placé dans / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

Après cela, vous devez activer mod_rewrite avec cette commande:

sudo a2enmod rewrite

Le dernier, redémarrez votre service apache :

sudo service apache2 restart

Pour vous assurer que vous pouvez le vérifier à nouveau à partir de phpinfo dans Configuration> apache2handler> Modules chargés, il doit être écrit mod_rewriteet cela signifie que mod_rewrite est activé.


Cela devrait-il être dans un élément hôte virtuel?
jjxtra

Vous pouvez voir un exemple dans Apache Virtual Host Example
metamorph

1

J'ai eu le même problème, mais les autres réponses ne m'ont pas aidé. Cette ligne au début de .htaccessrésolu mon problème:

Options +FollowSymLinks -MultiViews
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.