En apache2 por diseño, cualquier solicitud http con un Host desconocido se dirigirá al primer VirtualHost cargado. ¿Hay alguna forma de desactivar esta función? Dicho de otra manera, quiero tener un servidor web donde el usuario solo pueda acceder a definiciones de VirtualHost con nombre explícito. Cualquier otro nombre de host no mencionado explícitamente en una línea ServerName o ServerAlias debe ignorarse en silencio.
es posible?
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>
Actualización: como se sugiere a continuación y en otros lugares, ignorar silenciosamente una solicitud puede no ser una buena idea y tal vez rompa los RFC para HTTP. Sin embargo, dado que los hosts virtuales están diseñados para simular tener múltiples servidores HTTP físicos separados, el enfoque de ignorar en silencio no me parece irrazonable. Sería lo mismo que el alojamiento virtual basado en IP y el cortafuegos de algunas de las IP (quizás no para todos los clientes).
fuente
RewriteRule . - [F]
Aquí hay una forma alternativa que no involucra reglas de reescritura:
fuente
<VirtualHost>
debe definirse primero en la configuración del servidor. Precisamente en qué archivo debe estar depende su configuración. (Sin embargo, su problema de "subdominios redirigidos" podría ser un problema no relacionado)esto funcionó para mí
reemplace xxxx con su ipv4 real e ipv6
reemplace myactualservername.com con un sitio web real atendido por la máquina
Estoy usando el host virtual basado en el nombre.
el crédito para esta solución va a
https://serverfault.com/a/82309/459796
fuente