En essayant de visiter l’un de mes sous-domaines, voici le message d’erreur reçu dans mon fichier error.log:
[Tue Jul 15 11:17:42.924790 2014] [core:alert] [pid 17309] [client 108.162.241.152:26427] /var/www/.htaccess: <IfModule not allowed here
[Tue Jul 15 11:17:43.672653 2014] [core:alert] [pid 13948] [client 108.162.242.152:38399] /var/www/.htaccess: <IfModule not allowed here
Visiter les sous-domaines via le navigateur indique simplement qu'il y a eu une erreur de serveur interne.
Voici mon fichier de configuration pour l'un de mes sous-domaines:
$ less sites-enabled/paste.jhvisser.com.conf
<VirtualHost *:80>
DocumentRoot "/var/www/paste"
ServerName paste.jhvisser.com
<Directory "/var/www/paste">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
J'ai des enregistrements DNS qui pointent vers le nom du serveur. Celles-ci ont cessé de fonctionner lors de la mise à niveau d'Ubuntu 12.04 LTS vers Ubuntu 14.04 LTS, qui a mis à niveau Apache 2.2 vers Apache 2.4.
Je suis confus quant à quel est le problème ici?
L'un des principaux changements d'Apache 2.2 à 2.4 est la manière dont les autorisations pour les répertoires sont accordées. La syntaxe allow from
et deny from
est désormais déconseillée au profit de la nouvelle syntaxe require
. Voir Mise à niveau d'Apache de 2.2 à 2.4 .
Il existe un module mod_access_compat qui est censé vous permettre de continuer à utiliser l'ancienne syntaxe. Malheureusement, cela n'a pas fonctionné pour moi pour les fichiers de configuration sous /etc/Apache2 . Je devais les parcourir et les mettre à jour avec la nouvelle syntaxe Require
.
Si vous remplacez
allow from all
avec
Require all granted
vos sous-domaines fonctionneront probablement beaucoup mieux. Recherchez toutes les occurrences de Allow
, Deny
ou Order
. Tous doivent être remplacés par la nouvelle syntaxe pour Require
. Le documentation de mise à nivea a plus d'exemples pour d'autres cas d'utilisation.
Personnellement, je trouve que la nouvelle syntaxe Require
est bien meilleure. Cela me semble plus clair et il devrait être plus facile de traiter des cas complexes basés sur des mots de passe ou des adresses IP. L'inconvénient de cette modification est que l'ancienne syntaxe nécessite une mise à jour dans vos fichiers de configuration.
Sur le plan positif, le module d’accès compatible a traité toutes les directives de style ancien que j’avais dans les fichiers . Htaccess , donc uniquement les fichiers de configuration dans /etc/Apache2 devait être mis à jour pour moi.