web-dev-qa-db-fra.com

Apache mis à jour de 2.2 à 2.4 et maintenant mes sous-domaines sont cassés

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?

4
ComputerLocus

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.

5
Stephen Ostermiller