RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
O código acima examina o host HTTP do navegador de conexão. Observe que o .htaccess só pode funcionar em um pedido que possa alcançar o servidor da web. Isso funcionará para forum.example.com
, mas somente se forum.example.com
realmente carregar o conteúdo no diretório em que o arquivo .htaccess reside. Se você não tiver os registros DNS configurados (por exemplo, um registro *
A ou um registro de forum
A) então ele nem mesmo irá para o site, porque o DNS é inválido. Além disso, o Apache deve ser configurado para carregar o site para esse VirtualHost. Portanto, ele deve estar listado na configuração do Apache antes que o .htaccess possa encaminhar a URL conforme especificado.
Para sua segunda pergunta, no RewriteRule
part ^(.*)$
, isso corresponde apenas ao arquivo que é acessado fora do servidor. A parte RewriteCond
aplica apenas a regra em certos nomes de host, então ^(.*)$
especifica que qualquer solicitação siga as regras de reconfiguração.
Portanto, o código .htaccess acima será aplicado a todas as solicitações após o /
, se o host não for igual a example.com
.
Deixe-me saber se você precisar de mais explicações.