Apache2 - Comment avoir "Erreur 404" pour un site désactivé

Bonjour,

Je en comprends pas quelque chose sous Apache2, vous allez surement pouvoir m’aider.
J’ai un serveur Apache avec 2 sites que j’appelle par exemple site1.labo et site2.labo, configurés et activés avec a2ensite. Les deux fonctionnent bien.
Quand je désactive le premier site (site1.labo),et que j’essaie d’y accéder depuis un poste client, je tombe systématiquement sur le second site site2.labo…
Comment se fait-il que je n’aie pas de message “Erreur 404” ?
Qui peut me dire comment faire ? Je ne pige pas pourquoi ce n’est pas automatique, et pourquoi je suis redirigé vers le second site alors que je ne le demande pas…

Merci d’avance,

Flitox.

Ca c’est anormal.
Tu ne devrais pas avoir site2.labo, mais le site par défaut debian, avec la page “It works”.
C’est que la configuration de site2.labo doit ramasser par défaut pour tout ce qui finit en .labo, ou un truc comme ça, il faudrait voir ta configuration de virtualhost pour site2.labo.

Sinon, si tu veux absolument renvoyer une 404 sur site1.labo, il faut mettre une directive (qui ne me reviens pas là comme ça) dans la config de site1.labo et le réactiver.
Sinon, le comportement par défaut etant de se rabattre sur la config 000-default.conf, tu dois pouvoir la disabler (à tester) pour qu’il n’y ai plus que tes virtualhosts actifs qui répondent en 200.

Bonjour,
Merci pour ta réponse rapide.
Je pense que tu parles de la directive .htaccess ?

Pour ce qui est de ma config, j’ai désactivé le site par défaut (000-default).
Et si je désactive mon site1 (001-site1), et que je tente d’y accéder via le client, il m’affiche la page du site2.
Mais je pense comprendre.
Sur mon client, j’ai mis les enregistrements suivants dans mon fichier /etc/hosts :

10.x.y.z   www.site1.labo   site1.labo
10.x.y.z   www.site2.labo   site2.labo

Donc forcément, quand le site1 est désactivé, il tombe sur le site2 à cause du fichier hosts (enfin il me semble)…
N’y a-t-il que la solution du .htaccess ?

Merci à vous

Bonjour,

J’ai déjà eu ça et c’est vrai que c’est très curieux, d’autant plus si dans les fichiers de configuration de chaque vhost, tu mets bien le domaine auquel il doit répondre. J’avais ça sous nginx que j’ai contourné en créer un vhost par défaut qui renvoi 444.

Du coup, en me basant sur ce que je fais sous nginx et sur ce site, je pense qu’un truc du genre devrait le faire :

<VirtualHost *:80>
	Redirect 404 /
</VirtualHost>

Par contre attention à bien mettre ça dans le 000-default.conf.

Bonjour,

Ce n’est pas dû à ton fichier hosts mais au mode de fonctionnement des hôtes virtuels par nom d’Apache.

Lorsque tu as plusieurs noms de domaine associées à la même machine (même IP), lors d’une requête sur un nom de domaine apache cherche dans les hôtes virtuels actifs celui qui correspond à ce domaine (via la directive ServerName).
S’il n’en trouve pas, il répond avec le premier hôte virtuel disponible, c’est à dire le premier fichier de conf dans l’ordre alphabétique.

D’où l’intérêt d’avoir toujours un hôte virtuel par défaut (000-default.conf est généralement le premier dans l’ordre alphabétique) qui envoie une réponse quelconque : une page prévue à cet effet, une erreur 403, ou une redirection comme le suggère @sk4hrr.

Bah htaccess ou fichier de config, c’est le type de directive que tu peux mettre indifféremment dans les deux.
C’est la directive qui permet de mettre ton serveur à renvoyer un code 503 pour une maintenance.
Là, je te propose de faire la même chose, mais en renvoyant 404 au lieu de 503.
Mais je n’arrive plus à retrouver le nom de la directive (j’ai recherché sur google).

503 plutôt.

A la limite, pour suivre la suggestion de @anon70622873, ça peut faire une bonne configuration de virtual host par defaut.
Comme ça, quand tu désactives un domaine, ça bascule direct la réponse sur toutes ses pages en 404.

Merci à tous pour vos réponses qui m’aident bien.
J’ai en effet configuré une page d’erreur dans le site par défaut, qui fait vu ien l’affaire.
Je trouve juste que ça fait un peu bidouille.
Je n’ai pas encore testé la solution de @sk4hrr
Je vais tester ça tout à l’heure, est peut-être plus conventionnel à mon sens

Et si tu veux envoyer un message encore plus puissant de désindexation aux moteurs de recherche, tu renvoies une 410 au lieu d’une 404: les robots des moteurs viendront moins souvent visiter les pages qu’ils ont connu un jour, avec la 410.

Je connaissais la 404 mais une 410 cela a l’air d’être plutôt rare. Et ce qui est rare est cher 410 M$

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

En 2009 nous avons réduit notre endettement qui n’est plus que de 1,5 fois le cash flow
Franck Piedelièvre le 29 janvier 2010. Les voeux du Président.