
Há muitas informações sobre como redirecionar um domínio inteiro para outro domínio, mas não consigo encontrar nenhuma pergunta respondida sobre como redirecionar um domínio para uma página específica em um segundo domínio. Isto é o que eu configurei:
<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>
Isso redireciona, mas apenas para a página padrão do domínio2. Como posso alterar isso para que vá para a página específica?
Responder1
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
Isso já faz o que você precisa e redirecionatudopara https://www.domain2.org.uk/specific-page/
- como indicado noRewriteRule
substituição. (Apesar deRewriteRule
padrãoestá capturando desnecessariamente uma referência anterior.)
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
NO ENTANTO (a menos que seja um erro de digitação no trecho de código exemplificado), a condição (que verifica se o Host
cabeçalhonãoterminar com domain1.co.uk
) resultará em um loop de redirecionamento ( domain2.org.uk
é obviamentenão domain1.co.uk
, então a condição é sempre satisfeita). E os seguintes RewriteRule
redirecionamentostudo.
OCondPadrãonesta RewriteCond
directiva precisa ser alterada, por:
- Removendo o
!
prefixo (negação). (Embora o final$
ainda cause problemas com um FQDN que termina em ponto.) - OU, mude para
!domain2\.org\.uk$
Mas... já que você claramente tem acesso à configuração do servidor e está trabalhando em umhost virtualcontexto, você realmente não deveria usar mod_rewrite para isso. Você deve criar um vhost separado, um para domain1
, outro para domain2
e usar uma diretiva mod_alias RedirectMatch
... menos sujeito a erros, mais eficiente.
Por exemplo:
<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: Esses vhosts são apenas para HTTP (porta 80), então você naturalmente precisará repetir esse redirecionamento para HTTPS (porta 443).