Máquinas virtuales Apache mod_rewrite y conflictos
-
18-09-2019 - |
Pregunta
He estado buscando en la red y SO y no puedo conseguir alrededor oa través de este problema.
Tenemos un montón de subdominios y algunos servidores dedicados. Un servidor hace deber doble triples, seguimiento de problemas y página de destino. El problema es la página de aterrizaje comodín no te lleva a la página principal virtual correcta veces. He estado buscando en comodines pero parecen especialmente amplia.
Nuestro escenario es el siguiente:
- www.askia.com es el sitio de aterrizaje principal. A (comodín) subdominio no existente siempre debe aterrizar aquí.
- dev.askia.com es el apoyo y las cuestiones técnicas del sitio. Tiene algunas mod_rewrites para HTTPS. Me tomó un tiempo, pero tengo que trabajar y yo preferiría no romperlo.
- www.askia.fr es nuestro sitio francés. En vez de llevarlo a www.askia.com que le lleva a la dev.askia.com.
- www.askia.co.uk que debe tomar a www.askia.com y sale a dev.askia.com
No estoy del todo seguro de dónde debería estar tratando de fijar la solución. ¿Debo hacer algo en el CNAME. En el archivo de configuración VirtualHosts o en el archivo mod_rewrite.
Solución
Trate estas reglas:
RewriteCond %{HTTP_HOST} ^dev\.
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://dev.askia.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.askia\.com$
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://www.askia.com%{REQUEST_URI} [L,R=301]
La primera regla redirige todas las peticiones a un host a partir de dev.
pero no dev.askia.com
a www.askia.com
. Y la segunda regla redirigir las solicitudes a un host que no sea www.askia.com
y dev.askia.com
a www.askia.com
. Así que cada petición o bien debe ir a dev.askia.com
o www.askia.com
.
Otros consejos
Cuando Utilización de máquinas virtuales en Apache el primer alojadas aparece siempre será el valor predeterminado para los no partidos.
#default vhost
# any non-matches will land here
<VirtualHost _default_:80>
ServerName www.askia.com:80
DocumentRoot /path/to/site
ErrorLog /path/ti/sites/logs/error_log
</VirtualHost>
# vhost #2
<VirtualHost _dev_Site_:443>
ServerName dev.askia.com:443
DocumentRoot /path/to/dev/site
ErrorLog /path/to/dev/sites/logs/error_log
#ssl details
SSLEngine on
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /location/securti.crt
SSLCertificateKeyFile /location/securti.key
#any rewrite rules to apply only to this (default) domain
# force SSL for instance..
RewriteRule .* - [F]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://dev.askia.com/
</VirtualHost>
#etc, etc