Est-ce une façon correcte d'activer htaccess dans Apache 2.4.7 sur Ubuntu 12.04

40

Dans presque toutes les solutions de "Comment activer htaccess", ils disent que le fichier / etc / apache2 / sites-available / default doit être modifié. Mais il n'y a pas de tel fichier 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. À partir d'une documentation apache2, j'ai constaté que AllowOverride est uniquement autorisé sous la section <Directory> . Puis j'ai essayé d'ajouter ceci:

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

Et cela semble fonctionner. Mais je ne sais pas si j'aurais dû mettre / var / www là-bas. Est-ce une façon correcte de le faire ou mon ordinateur va-t-il exploser d'une manière ou d'une autre?

Merci.

    
posée CluelessNoob 05.03.2014 - 15:54
la source

4 réponses

52

tl; dr

Oui, c'est la bonne façon.
Mais pour être plus sémantique : Oui, c'est la bonne façon d’autoriser .htaccess à remplacer toutes les directives du répertoire /var/www .

Comme vous l’avez découvert, AllowOverride est autorisé uniquement sous Directory section.

En utilisant votre exemple:

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

Ceci dit, toutes les configurations peuvent être remplacées dans /var/www et tous ses sous-répertoires (récursivement).

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épertoires suivante:

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

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

Si l'on compare la structure des répertoires à la configuration, cela signifie que tous les fichiers .htaccess du dossier /var/www et ses sous-répertoires, à l'exclusion du répertoire /var/www/uploads et de ses sous-répertoires, peuvent remplacer tous les types de directives. .

Mais /var/www/uploads et ses sous-répertoires ne peuvent utiliser que le fichier .htaccess pour remplacer les directives Allow , Deny et Order .

Remarque: à partir d’apache 2.4 (disponible par défaut dans la version 13.10+), les directives Allow , Deny et Order ont été remplacées par une seule directive nommée Require .

    
réponse donnée Dan 05.03.2014 - 17:54
la source
34

Activez d'abord la réécriture à l'aide de cette commande:

sudo a2enmod rewrite

Puis redémarrez apache2:

sudo service apache2 restart

Ensuite, allez dans le dossier sites-available :

/etc/apache2/sites-available

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

Cela fera fonctionner .htaccess sur votre serveur VPS.

Cela a fonctionné sur un VPS Ubuntu 12.04.5.

    
réponse donnée q8fft 09.08.2014 - 12:13
la source
3

Dans mon cas, cela a fonctionné comme ceci:
J'ai dû ajouter les lignes suivantes:

Order allow, deny
Allow from all

Alors ça ressemble à ça:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
    
réponse donnée Prof. Chagas 26.01.2017 - 21:42
la source
1

Voici un extrait expliquant comment activer 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
    
réponse donnée panticz.de 19.07.2018 - 10:08
la source

Lire d'autres questions sur les étiquettes