55 votes

Est-ce une façon correcte d'activer le htaccess dans Apache 2.4.7 ?

Dans presque toutes les solutions de "Comment activer le htaccess", il est dit que le fichier /etc/apache2/sites-available/default doit être modifié. Mais ce fichier n'existe pas dans Apache 2.4.7.

J'ai lu quelque part que le nouveau fichier par défaut est 000-default.conf. J'ai donc édité celui-là et essayé d'ajouter la ligne :

AllowOverride All

Mais Apache2 n'a pas redémarré correctement et a donné une erreur. En consultant la documentation d'Apache2, j'ai trouvé que AllowOverride n'est autorisé que sous l'option <Directory> section. Puis j'ai essayé d'ajouter ceci :

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

Et cela semble fonctionner. Mais je ne suis pas sûr que j'aurais dû mettre /var/www à cet endroit. Est-ce une façon correcte de procéder ou mon ordinateur va-t-il exploser d'une manière ou d'une autre ?

66voto

Ingvald Points 373

En résumé

Oui, c'est la bonne méthode.
Mais pour être plus sémantique : Oui, c'est la façon correcte d'autoriser .htaccess pour remplacer toutes les directives de l'option /var/www répertoire.


Comme vous l'avez découvert, AllowOverride n'est autorisé que dans le cadre du Directory section.

En utilisant votre exemple :

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

Cela indique à Apache que toutes les configurations peuvent être remplacées dans le fichier /var/www et tous ses sous-répertoires (de manière récursive).


Pour un meilleur exemple, considérez que vous avez la configuration suivante dans votre hôte virtuel :

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

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

Et la structure de répertoire suivante :

var/
    www/
        .htaccess
        uploads/
            .htaccess
            a/
                .htaccess
            b/
                .htaccess
        code/
            .htaccess
            c/
                .htaccess
            d/
                .htaccess

Ce que j'ai fait ici, c'est créer un .htaccess dans chaque sous-répertoire du /var/www répertoire.
Normalement, ça ne devrait pas être comme ça, mais c'est juste pour le bien de l'exemple.

Si l'on compare la structure des répertoires avec la configuration, cela signifie que toutes les .htaccess dans les fichiers /var/www et ses sous-répertoires, à l'exception du dossier /var/www/uploads et ses sous-répertoires, peuvent remplacer toutes sortes de directives.

Mais /var/www/uploads et ses sous-répertoires ne peuvent utiliser que l'option .htaccess pour remplacer l'option Allow , Deny y Order des directives.

Remarque : Depuis apache 2.4 (qui est disponible par défaut dans la version 13.10+), la fonction Allow , Deny y Order ont été remplacées par une seule directive nommée Require .

45voto

Activez d'abord la réécriture en utilisant cette commande :

sudo a2enmod rewrite

Puis redémarrez apache2 :

sudo service apache2 restart

Ensuite, allez dans le sites-available dossier :

/etc/apache2/sites-available

Modifiez le fichier nommé default et le changement AllowOverride none a AllowOverride All . Il y a deux lignes où ce changement doit être effectué.

Cela rendra .htaccess travailler dans votre serveur VPS.

Cela a fonctionné sur un VPS Ubuntu 12.04.5.

3voto

Prof. Chagas Points 41

Dans mon cas, ça a marché comme ça :
J'ai dû ajouter les lignes suivantes :

Order allow, deny
Allow from all

Donc ça ressemble à ça :

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

3voto

John2095 Points 714

Voici un extrait qui explique comment activer le htaccess dans Apache 2.4 sans modifier la configuration par défaut :

cat <<EOF> /etc/apache2/conf-available/allow-override.conf
<Directory "/var/www">
    AllowOverride all
</Directory>
EOF

a2enconf allow-override
service apache2 reload

1voto

Gnoll Barkley Points 19

Un problème commun que j'ai rencontré dans ces tutoriels est qu'il n'y a pas de fichier default.conf dans

/etc/apache2/sites-available

J'ai pu trouver l'endroit où le changer, mais c'était le fichier apache2.conf ici.

/etc/apache2/apache2.conf

Je ne sais pas vraiment si c'est une bonne idée, mais ça a marché pour moi, et dans l'environnement dans lequel je suis, c'est sûr.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X