Como redirecionar root e somente root via htaccess?

53

Quero redirecionar apenas minha raiz para outro URL, mas manter todos os diretórios / sub / onde eles pertencem (e redirecionar)

exemplo:

mysite.com/1 redireciona para algum lugar mysite.com/admin abre uma página

Eu quero mysite.com/ redirecionar para mysecondsite.com e apenas isso com um redirecionamento 301 usando htaccess


fonte

Respostas:

75

Tente o seguinte:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Se você não precisar verificar o domínio antigo (por exemplo, se o diretório em que seu .htaccess está colocado for usado apenas pelo domínio antigo), poderá remover a segunda linha.

Rodrigo Sieiro
fonte
11
No meu caso, eu precisava para redirecionar o tráfego para mysite.com/ mas não foo.mysite.com por isso teve de adicionar um regex para a linha 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]para garantir a partida foi para o host exato
jaygooby
É mais eficiente verificar o caminho da URL no RewriteRule padrão (como na resposta de @ DaveForgac), em vez de usar uma condição adicional para verificar a REQUEST_URIvariável do servidor.
MrWhite
38

Se você quer apenas redirecionar "/" para outro domínio, isso funcionará:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

Isso só corresponde à raiz do domínio com nada depois e, portanto, só redireciona o nome do domínio sem um nome de arquivo especificado.

Dave Forgac
fonte
Uma ligeira variação funcionou para mim. Adicionado ao final do meu htaccess, depois de todas as outras regras invocadas, eu só queria renderizar uma página de boas-vindas a qualquer pessoa que estivesse visitando meu domínio raiz (sem nenhum subdomínio): RewriteCond% {HTTP_HOST}! ^ (Subdomínio1 | subdomínio2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Isso deve funcionar bem:

RedirectMatch 301 ^/$ https://example.com/
stefanbc
fonte
2
Isso seria preferível (para as respostas existentes) se você ainda não estiver usando o mod_rewrite para outros redirecionamentos.
MrWhite
-3

Uma solução mais curta:

Redirect 301 / http://mysecondsite.com/
minipark
fonte
12
Isso NÃO fará o que a jardel deseja. Ele redirecionará TODAS as páginas, e não apenas a raiz.
sharoz