Dans apache2 par conception, toute demande http avec un hôte inconnu sera dirigée vers le premier VirtualHost chargé. Existe-t-il un moyen de désactiver cette fonctionnalité? Autrement dit, je veux avoir un serveur Web où l'utilisateur ne peut accéder qu'aux définitions de VirtualHost explicitement nommées. Tout autre nom d'hôte non explicitement mentionné dans une ligne ServerName ou ServerAlias doit être ignoré en silence.
Est-ce possible?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Mise à jour: comme suggéré ci-dessous et ailleurs, ignorer silencieusement une demande peut ne pas être une bonne idée et peut-être casse les RFC pour HTTP. Cependant, étant donné que les hôtes virtuels sont conçus pour simuler plusieurs serveurs HTTP physiques distincts, l'approche silencieuse ne me semble pas déraisonnable. Ce serait la même chose que l'hébergement virtuel basé sur IP et le pare-feu sur certaines adresses IP (peut-être pas pour tous les clients).
la source
RewriteRule . - [F]
Voici une autre méthode qui n'implique pas de règles de réécriture:
la source
<VirtualHost>
doit donc être défini en premier dans la configuration du serveur. Le fichier qui doit se trouver dépend précisément de votre configuration. (Cependant, votre problème de "sous-domaines redirigés" pourrait être un problème sans rapport.)cela a fonctionné pour moi
remplacez xxxx par votre ipv4 et ipv6
réels remplacez myactualservername.com par un site Web réel desservi par la machine
j'utilise l'hôte virtuel basé sur le nom.
le crédit pour cette solution va à
https://serverfault.com/a/82309/459796
la source