borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Formato condicional según el día de la semana
  3. Enlaces sobre desarrollo web
  4. Recortar texto
  5. Convertir de minutos a horas
Compartir esta página

Dominio principal

Por dominio principal (o dominio canónico) entendemos aquel nombre de dominio oficial con el que publicitamos una web, independientemente de que ésta sea accesible a través de otros dominios o subdominios. Si el visitante llega a través de un dominio secundario suele ser interesante redirigirle al principal: las cookies se asignan a un único dominio, los buscadores no se confunden pensando que son sitios distintos, se da una mejor imagen y el mundo es un lugar mejor.

Veamos un par de formas de hacerlo mediante Apache.

RedirectPermanent

La forma óptima de redirigir es crear un sitio web virtual para los dominios alternativos y utilizar la directiva RedirectPermanent para enviar al dominio principal:

# # Dominios secundarios # <VirtualHost *:80> ServerName example.com ServerAlias example.net www.example.net ServerAlias example.org www.example.org RedirectPermanent / http://www.example.com/ </VirtualHost> # # Definición del sitio web # <VirtualHost *:80> ServerName www.example.com DocumentRoot /home/foo/htdocs # ... </VirtualHost>

Lamentablemente esto sólo es factible cuando administramos nuestro propio servidor: en un archivo .htaccess no podemos definir un VirtualHost y no tenemos una forma sencilla de poner condiciones a la redirección.

mod_rewrite

En cambio, casi siempre podemos utilizar mod_rewrite. A nivel de rendimiento es matar moscas a cañonazos pero si no queda otra… Estas directivas se pueden usar en un archivo .htaccess y los más paranoicos las pueden insertar entre <IfModule mod_rewrite.c> y </IfModule> para evitar el temible error 500 si el servidor no dispone de mod_rewrite.

Enfoque «redirigimos si…»

Redirigimos si y sólo si accedemos desde una serie determinada de dominios (útil si usamos el mismo .htaccess para desarrollo y producción).

RewriteEngine On # # Redirigimos al dominio principal # RewriteCond %{HTTP_HOST} ^(www\.)?example\.net$ [NC,OR] RewriteCond %{HTTP_HOST} ^(www\.)?example\.org$ [NC,OR] RewriteCond %{HTTP_HOST} =example.com [NC] RewriteRule ^ http://www.example.com/$0 [NC,NE,R=301,L]

Enfoque «redirigimos si no…»

Redirigimos si accedemos desde cualquier dominio que no sea el principal (útil en el resto de casos).

RewriteEngine On # # Redirigimos al dominio principal # RewriteCond %{HTTP_HOST} !=www.example.com [NC] RewriteRule ^ http://www.example.com/$0 [NC,NE,R=301,L]

Un par de notas

Historial

v2015-04-02
Agregar flag [NE] para conservar las rutas originales.
Simplificar algunas reglas y no usar expresiones regulares en vano.
v2009-11-22
Primera versión.

Esta página ha sido impresa el miércoles 12 de agosto de 2026 (15:13:51 +0200) desde https://borrame.com/recortes/apache/dominio-principal.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

Lorem ipsum dolor sit amet.

© 2005-2026 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com