Preciso de ajuda e preciso rápido.
Recentemente migramos um subdomínio para integração com o domínio.
Por exemplo. https://blog.example.com
parahttps://www.example.com/blog
https://blog.example.com
tem muito tráfego que não queremos perder. Portanto, precisamos fazer redirecionamentos 301.
O problema é que https://blog.example.com
tem mais de 200 páginas com bom desempenho.
Preciso de conselhos sobre como podemos redirecionar todas as páginas para as páginas correspondentes no novo local sem deixar o site lento ou sobrecarregar o servidor.
Nós tentamos
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]
Mas só o home pahe foi redirecionado
Temos que redirecionar cada uma dessas páginas uma por uma?
Responder1
Nós tentamos
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.com [NC] RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]
Você disse que "migrou recentemente um subdomínio", no entanto, o código que você postou não tem como alvo um subdomínio e entra em conflito com os nomes de host de exemplo que você descreveu na pergunta?
Isso irá redirecionar "apenas o home pahe" se você o tiver colocado no lugar errado do .htaccess
arquivo. por exemplo. Se você o colocoudepoisuma reescrita interna para um controlador frontal. Esse redirecionamento precisaria ir para o topo do seu .htaccess
arquivo raiz.
sem desacelerar o site ou sobrecarregar o servidor.
200 redirecionamentos de URL iguais são insignificantes em termos de desempenho/sobrecarga. No entanto, para minimizar completamente todo o impacto que esses redirecionamentos possam ter, o blog
subdomínio deverá apontar para uma área diferente do sistema de arquivos, o que simplifica ainda mais o redirecionamento. (Na verdade, você não precisa apontar o subdomínio para nenhum diretório específico e, em vez disso, executar o redirecionamento diretamente na configuração do servidor/host virtual, não .htaccess
.)
Seus "200 redirecionamentos" podem então ser executados com uma única Redirect
diretiva mod_alias (dentro .htaccess
ou <VirtualHost>
contêiner). Por exemplo:
Redirect 301 / https://www.example.com/blog/
A Redirect
diretiva corresponde ao prefixo e tudo após a correspondência é copiado para o final do URL de destino. Assim, por exemplo, http(s)://blog.example.com/anything
301 é redirecionado para https://www.example.com/blog/anything
.
Caso contrário, se o seu subdomínio e o domínio principal apontarem para o mesmo local no sistema de arquivos, use mod_rewrite para verificar o nome do host solicitado, da mesma forma que você fez inicialmente (embora não tenha certeza do motivo pelo qual estava verificandoexample.com
ou www.example.com
quando você deveria estar verificando o subdomínio blog.example.com
).
Por exemplo, nomuito topdo arquivo raiz .htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
A NC
flag é supérflua pois a regex .*
já corresponde a tudo.
Ou use a REQUEST_URI
variável do servidor na RewriteRule
diretiva e evite a referência anterior. Por exemplo:
:
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
A REQUEST_URI
variável do servidor já inclui o prefixo da barra.
Teste primeiro com um redirecionamento 302 (temporário) para evitar possíveis problemas de cache. E certifique-se de limpar o cache do navegador antes de testar.