
Hay mucha información sobre cómo redirigir un dominio completo a otro dominio, pero no puedo encontrar ninguna pregunta respondida sobre cómo redirigir un dominio a una página específica en un segundo dominio. Esto es lo que he configurado:
<VirtualHost *:80>
ServerName www.domain2.org.uk
ServerAlias domain2.org.uk domain1.co.uk www.domain1.co.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
RewriteEngine On
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
</VirtualHost>
Esto redirige pero solo a la página predeterminada para el dominio2. ¿Cómo puedo cambiar esto para que vaya a la página específica?
Respuesta1
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
Esto ya hace lo que necesitas y redirige.todoa https://www.domain2.org.uk/specific-page/
- como se indica en elRewriteRule
sustitución. (Aunque elRewriteRule
patrónestá capturando innecesariamente una referencia retrospectiva).
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
SIN EMBARGO (a menos que se trate de un error tipográfico en el fragmento de código ejemplificado), la condición (que verifica que el Host
encabezado nonoterminar con domain1.co.uk
) dará como resultado un bucle de redireccionamiento ( domain2.org.uk
obviamente esno domain1.co.uk
, por lo que la condición siempre se cumple). Y las siguientes RewriteRule
redireccionestodo.
ElPatrónConden esta RewriteCond
directiva debe modificarse mediante:
- Eliminando el
!
prefijo (negación). (Aunque el final$
todavía causaría problemas con un FQDN que termina en un punto). - O cambiar a
!domain2\.org\.uk$
Pero... dado que claramente tienes acceso a la configuración del servidor y estás trabajando en unanfitrión virtualcontexto, realmente no deberías usar mod_rewrite para esto. Debería crear un vhost separado, uno para domain1
, el otro para domain2
y usar una directiva mod_alias RedirectMatch
en su lugar... menos propenso a errores, más eficiente.
Por ejemplo:
<VirtualHost *:80>
ServerName domain1.org.uk
ServerAlias www.domain1.org.uk
RedirectMatch 301 ^ https://www.domain2.org.uk/specific-page/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.org.uk
ServerAlias www.domain2.org.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
NB: Estos vhosts son solo para HTTP (puerto 80), por lo que, naturalmente, necesitarás repetir esta redirección para HTTPS (puerto 443).