Você tem alguns problemas em potencial que poderiam explicar por que um funciona e um não ...
-
Você está misturando as diretivas mod_alias (
RedirectMatch
) e mod_rewrite (RewriteRule
) para redirecionamentos externos. Módulos diferentes executam em momentos diferentes durante a solicitação e trabalham de forma independente. Isso pode resultar em conflitos confusos. Se você estiver usando mod_rewrite, então é mais seguro usar o mod_rewrite por completo. -
Você está usando o WordPress. Portanto, você tem diretivas mod_rewrite existentes que roteiam a solicitação. Quaisquer redirecionamentos externos devem vir antes de quaisquer diretivas de roteamento do WP.
RewriteRule (.*) sub2.domain2.com/$1 [R=301,L]
Você também está perdendo o esquema (ie. http://
) da substituição, então isso será visto como relativo e quebra.
Então, o seguinte deve vir antes de qualquer diretiva existente do WordPress, perto do topo do seu arquivo .htaccess
:
# Redirect sub2.domain2.com/ to sub2.domain2.com/sub-folder
RewriteCond %{HTTP_HOST} =sub2.domain2.com [NC]
RewriteRule ^$ http://sub2.domain2.com/sub-folder [R=301,L]
# Redirect sub1.domain1.co.uk/<anything> to sub2.domain2.com/<anything>
RewriteCond %{HTTP_HOST} =sub1.domain1.co.uk [NC]
RewriteRule (.*) http://sub2.domain2.com/$1 [R=301,L]