
Leí SO temas sobre el tema. Sin embargo, sólo se aplican a hosts únicos.
Me gustaría tener una regla uniforme para todos los servidores de dominios actuales y futuros.
Básicamente, quiero eliminar www de todas las solicitudes y dejar solo el nombre de dominio para que sea accesible.
Apache también sirve HTTPS, entonces, ¿cómo aplicar esto a todos?
¡Gracias!
http://www.example.com >> http://example.com
https://www.example.com >> https://example.com
María
Respuesta1
Lo que estás describiendo es (aparentemente) imposible de usar mod_rewrite
, hasta cierto punto.
Las configuraciones de múltiples "niveles" no se acumulan mod_rewrite
, por lo que un conjunto de reglas definido en la configuración del servidor principal no se importará ni se aplicará automáticamente a una solicitud delegada a un archivo <VirtualHost>
.
Sin embargo, asumiendo que tienes que asignar el <VirtualHost>
en algún momento de todos modos, si no planeas tener otras reglas dentro del <VirtualHost>
cuerpo (si están en .htaccess
una <Directory>
sección, estaría bien), puedes jugar con el siguiente.
En la configuración principal, tomaremos mirespuesta a esta pregunta relacionaday aplicarlo:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
Luego, en cada una de nuestras <VirtualHost>
secciones, podemos "importarlo" usando elRewriteOptions
directiva:
RewriteEngine On
RewriteOptions inherit
Como alternativa, por supuesto, puede simplemente copiar el conjunto de reglas en cada uno <VirtualHost>
en su totalidad, pero esto mantiene el conjunto de reglas relevante en una única ubicación.
Tenga en cuenta que la razón por la que sugiero no tener reglas adicionales <VirtualHost>
directamente en este caso es que las reglas heredadas están incluidas.despuéslo que haya definido en el nivel actual de la configuración, que podría tener efectos secundarios no deseados.