Comment configurer l'hôte virtuel par défaut pour renvoyer un en-tête 404 dans apache?

14

Je sais que des questions similaires ont été posées, mais les réponses disponibles ne sont pas très claires, alors soyez indulgents.

Après avoir installé quelques <VirtualHost>s dans apache, je voudrais configurer le _default_ nom_serveur pour qu'il renvoie le message 404. C'est-à-dire, sauf si un domaine explicitement disponible est spécifié dans l'en-tête http de l'hôte, retournez 404. (Idéalement, quelque chose de plus direct que de pointer vers un répertoire désormais inexistant.)

Toute aide serait grandement appréciée.

ezequiel-garzon
la source

Réponses:

27

As-tu essayé:

Redirection 404 /
ErrorDocument 404 "Page non trouvée"

dans le VirtualHost par défaut?


la source
Merci, ça y est! Puisqu'il est clair que mon faible niveau d'expertise, je pourrais ajouter pour mes collègues débutants que le serveur par défaut devrait apparaître en premier. (Cela m'a pris un certain temps pour comprendre!)
ezequiel-garzon
REMARQUE: si le ErrorDocumentpointage vers un fichier ou une URL à l'intérieur de ce vhost, il renverra également un 404, générant ainsi une erreur de serveur interne.
Cyril N.
Cette réponse fonctionnerait pour les sites où tous les vhosts sont contenus dans un seul fichier (la réponse d'Eugène Fidelin est plus complète). Lorsque j'utilisais des fichiers .conf distincts pour chaque site avec a2ensite, je ne pouvais pas comprendre comment charger la configuration par défaut (404) en premier.
Andrew Swift du
Redirect 404 /est suffisant pour afficher la page par défaut Apache "Not Found" et cela fonctionne également à l'intérieur d'un hôte virtuel spécifique (il peut y avoir des cas où vous souhaitez renvoyer 404 pour un site entier pour le faire disparaître des SERPs de Google)
lucaferrario
1

Voici un exemple de 000-default.conf qui renverra une erreur 404 si le nom du serveur n'est pas configuré pour Apache

<VirtualHost *:80>
  ServerName default
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  Redirect 404 /
</VirtualHost>
Eugene Fidelin
la source
Je peux confirmer que la deuxième partie fonctionne lorsque tous les vhosts sont configurés dans un seul fichier (je le mets en premier).
Andrew Swift du
1
Il serait peut-être préférable d'utiliser 503 (Service non disponible) au lieu de 404, mais je doute qu'en pratique, cela fasse beaucoup de différence, les outils de surveillance alertent généralement pour tout code non 200.
Kris
Cela fonctionne parfaitement pour http mais pas pour https quand je fais avec le port 443. Avez-vous une idée à ce sujet?
Sohail Ahmed