web-dev-qa-db-fra.com

mod_rewrite est activé, mais ne fonctionne pas

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 ne pouvais pas obtenir que cela fonctionne, alors j'ai essayé d'activer mod_rewrite, mais le message "Réécriture de module est déjà activé".

Pourquoi ça ne fonctionne pas correctement? Merci! J'utilise Ubuntu Precise 12.04 et Apache 2.2.22. (Vérifié pour les mises à jour)

EDIT: Quelques détails supplémentaires, il s’agit d’une construction vagabonde de PuPHPet, la réécriture doit être activée.

14
Freddy Heppell

Vous devez autoriser le remplacement.

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

Tout d’abord, définissez votre configuration httpd à ceci (le chemin peut être différent. 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 devriez activer mod_rewrite avec cette commande:

Sudo a2enmod rewrite

Le dernier, redémarrez votre Apache service:

Sudo service Apache2 restart

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

14
metamorph

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

Options +FollowSymLinks -MultiViews
1
Damjan Pavlica