Apache virtualhost, sites enabled, redirecciones. Redirigir de un dominio a otro. FROM: https://simonecarletti.com/blog/2009/01/apache-query-string-redirects/; https://wiki.apache.org/httpd/RewriteQueryString;
# Redireccion del dominio antiguo
<VirtualHost *:80>
# Dominio al que corresponde
ServerName mydomain.com
# Otras formas de acceder al directorio
ServerAlias www.mydomain.com web.mydomain.com
# Redireccion basica por defecto
Redirect 301 "/" "http://www.mydomain.org/"
</VirtualHost>
# Nuevo dominio
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mydomain.org
ServerAlias www.mydomain.org mydomain.org
RewriteEngine on
# Redirecciones de elementos concretos.
# Cadena inicial
# Con esta condicion nos aseguramos que la peticion se hace desde una pagina concreta
# de lo contrario podria generar conflictos con otros elementos de nuestro sitio.
RewriteCond %{REQUEST_URI} ^/pagina\.lenguaje$
# REQUEST_URI hace referencia a la URI que nos llega al servidor
# ^ indica el comienzo de la cadena
# \. escapamos el punto para evitar que lo tome como "cualquier caracter"
# $ indica el final de la cadena
# pagina\.lenguaje: Esto podria ser home.php (pagina.lenguaje)
# Si cumple la condiciones anterior y la query string viene vacia redirigimos
# al inicio de nuestra pagina. Atencion al 301, se explica debajo.
# OBVIAMOS LAS EXPLICACIONES QUE SE HAN REALIZADO EN APARTADOS SUPERIORES
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://www.mydomain.org/? [R=301,L]
# QUERY_STRING indica la parte de query string de la URI: ?variable=valor
# . indica cualquier caracter
# * indica cero o mas veces
# R=301 indica una redireccion con el codigo 301, permanente.
# usar 302 si es temporal o ver listado de error http.
# https://es.wikipedia.org/wiki/Anexo:C%C3%B3digos_de_estado_HTTP
# L indica una flag (bandera) que evita que apache siga buscando coincidencias
# Redireccion directa de una pagina de un dominio a otra
# en el ejemplo estamos redireccionando a una web con url amigables
RewriteCond %{QUERY_STRING} ^variable=valor$
RewriteRule ^(.*)$ http://www.mydomain.org/foo/mi-url-divertida/mas-cosas/otra/? [R=301,L]
# Asumiendo la doncicion anterior la url que nos llega es algo como esto:
# pagina.lenguaje?variable=valor, o home.php?foo=bar
# Ponemos todas las redirecciones directas, una por elemento a redireccionar.
RewriteCond %{QUERY_STRING} ^variable=valor1$
RewriteRule ^(.*)$ http://www.mydomain.org/foo/mi-url-divertida/mas-cosas/otra/? [R=301,L]
RewriteCond %{QUERY_STRING} ^variable=valor2$
RewriteRule ^(.*)$ http://www.mydomain.org/foo/mi-url-divertida/mas-cosas/otra/? [R=301,L]
# Hay que fijarse que aunque el valor cambia el destino sigue siendo el mismo,
# usar una redireccion por cada elemento.
# El resto de casos van al inicio de nuestro nuevo dominio.
# en este caso al seguir todas el mismo patron usamos una regexp, cambiar segun uso.
# En el ejemplo imaginamos que todos los valores son caracteres normales en minuscula.
RewriteCond %{QUERY_STRING} ^variable=[a-z]+$
RewriteRule ^(.*)$ http://www.mydomain.org/? [R=301,L]
# fin redirecciones
DocumentRoot /var/www/mydomain.org/htdocs/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/mydomain.org/htdocs>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
AddHandler cgi-script .cgi
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
# ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog /var/www/mydomain.org/logs/error.log
# Indicamos la ruta donde guardar los ficheros de log de errores,
# muy util cuando tenemos cuando tenemos multiples dominios.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
# El log level indica el nivel de alerta que se guardara en los logs,
# va en disminucion desde el debug que logea casi cualquier cosa hasta
# el crit que logea solo fallos criticos.
# https://httpd.apache.org/docs/current/mod/core.html#loglevel
# CustomLog ${APACHE_LOG_DIR}/access.log combined
CustomLog /var/www/mydomain.org/logs/access.log combined
# que es combined?: https://httpd.apache.org/docs/2.4/logs.html#combined
# Indicamos la ruta donde guardar los ficheros de log de accesos,
# muy util cuando tenemos cuando tenemos multiples dominios.
</VirtualHost>