Parece que a linha a seguir funcionou (e remove o código anterior de redirecionamento pesado):
RedirectMatch 301 /subA/ http://subA.mydomain.com/
Obrigado a todos!
Heres a situação: Eu tenho um par de diferentes projetos da web em execução em um único host compartilhado. O projeto 'A' é acessado por meio de um subdomínio ( subA.mudominio.com.br ) enquanto o projeto 'B' é o principal mydomain. com
Tanto A como B são links simbólicos dentro da pasta public_html do host:
ln -s /home/myhost/ProjectA ~/public_html/subA
ln -s /home/myhost/ProjectB ~/public_html/main
O subdomínio ( project A ) funciona bem e o site está sendo executado nele. Para 'B' que é o domínio principal, usei o .htaccess para apontar o domínio principal para uma subpasta como escrito aqui . O site do domínio também está funcionando bem.
O problema é quando eu faço mydomain.com/subA , o site do subdomínio ( project A ) é aberto. Tentei adicionar regras de redirecionamento para apontar mydomain.com/subA - > subA.mudominio.com assim:
RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.mydomain.com$
RewriteRule ^subA\/?$ "http\:\/\/subA\.mydomain\.com\/" [R=301,L]
Mas a URL ainda lê mydomain.com/subA e o site mostrado é o projeto A (com imagens e arquivos estáticos faltando, obviamente, como se fosse um projeto web diferente).
Por que o redirecionamento não está funcionando?
A menos que você tenha um RewriteBase /
em algum lugar, ^subA\/?$
não corresponderá a nada. Mod_rewrite examina o URL inteiro, incluindo o início /. Experimente:
RewriteRule ^/subA/?$ http://subA.mydomain.com/ [R=301,L]
Além disso, você pode relaxar na fuga. Não faz mal, mas também não ajuda em nada e dificulta a leitura.
solicitar URI para mydomain.com/subA é / subA (note que não há barra final) que não coincide
altere sua regra de reescrita para
RewriteRule ^ subA link [R = 301, L]