Comment activer mod_rewrite dans Apache?

165

Je viens d'installer la pile LAMP sur mon système Ubuntu.

La redirection ne fonctionne pas pour moi. Je ne sais pas comment le réparer. Quelqu'un peut-il m'aider?

vinoth
la source
3
IMHO cette question n'est pas spécifique à Ubuntu et devrait être migrée vers Server Fault .
Paolo
2
L'OP a installé la lampe sur UBUNTU. Combien voulez-vous de plus spécifique à Ubuntu?
Wojox
1
@wojov: Je ne suis pas au courant de cette affaire, mais cet argument ne fonctionne pas. "Comment puis-je utiliser cette application (sur Ubuntu)?" sont pour la plupart hors sujet.
23
Ce n'est pas un "Comment utiliser une application", mais un "Comment activer une fonctionnalité spécifique dans Ubuntu". Apache sous Ubuntu utilise une configuration différente dans laquelle chaque module et hôte virtuel est un fichier /etc/apache2et qui peut être activée à l'aide de a2*programmes.
Lekensteyn
Décrivez ce que vous avez fait pour cerner le problème
ericn

Réponses:

239

Pour activer le module de réécriture, exécutez "apache2 enable module rewrite":

sudo a2enmod rewrite

Vous devez redémarrer le serveur Web pour appliquer les modifications:

sudo service apache2 restart

Si vous envisagez d'utiliser mod_rewrite dans des .htaccessfichiers, vous devez également activer l'utilisation des .htaccessfichiers en passant AllowOverride Noneà AllowOverride FileInfo. Pour le site Web par défaut, éditez /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Après une telle modification, vous devez redémarrer Apache.

Lekensteyn
la source
18
J'avais plus de succès avec AllowOverride All
Valentin Despa
Merci! sudo a2enmod rewriteet l'a FileInfocorrigé pour moi!
d -_- b
22
Pour moi, ce fichier était /etc/apache2/apache2.conf où j'ai trouvé cette entrée de configuration
doc_id
Oui, apportez les deux modifications pour résoudre le problème.
Adelin
Cela ne fonctionne pas pour moi. J'ai posté une question ici askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta
49

J'ose ajouter une réponse spéciale (en guise de suivi de l'excellente réponse ci-dessus) concernant Ubuntu 14.04 et .htaccess:

Dans 14.04, le nom du fichier de configuration par défaut est remplacé par 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

ajoutez ce qui suit à la fin du fichier:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Pour une raison quelconque, dans Ubuntu 14.04 et apache2, la racine est définie sur /www/html. Si vous voulez changer la racine du serveur Web en bon vieux /www, open 000-default.confet changer

DocumentRoot /var/www/html/

à

DocumentRoot /var/www/

et puis bien sûr il devrait être

<Directory "/var/www">
    AllowOverride All
</Directory>
Davidkonrad
la source
1
Merci pour l'info! Cette / nouvelle façon, nous pouvons utiliser www en tant que dossier dans lequel nous mettons tous les sites Web, et html est par défaut "site Web" pour localhost. Cela peut être important si vous jouez avec l'ouverture de ports au monde - de cette manière, votre hôte local ne pourra pas voir les dossiers d'autres projets.
Vladimir Vukanac
1
Cela ne fonctionne pas pour moi. J'utilise Ubuntu 14.04.4 LTS
Suhail Gupta