Como podemos fazer o redirecionamento 301 de mais de 200 páginas para 200 páginas correspondentes em um novo local?

Como podemos fazer o redirecionamento 301 de mais de 200 páginas para 200 páginas correspondentes em um novo local?

Preciso de ajuda e preciso rápido.

Recentemente migramos um subdomínio para integração com o domínio.

Por exemplo. https://blog.example.comparahttps://www.example.com/blog

https://blog.example.comtem muito tráfego que não queremos perder. Portanto, precisamos fazer redirecionamentos 301.

O problema é que https://blog.example.comtem 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 .htaccessarquivo. por exemplo. Se você o colocoudepoisuma reescrita interna para um controlador frontal. Esse redirecionamento precisaria ir para o topo do seu .htaccessarquivo 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 blogsubdomí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 Redirectdiretiva mod_alias (dentro .htaccessou <VirtualHost>contêiner). Por exemplo:

Redirect 301 / https://www.example.com/blog/

A Redirectdiretiva 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/anything301 é 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.comquando 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 NCflag é supérflua pois a regex .*já corresponde a tudo.

Ou use a REQUEST_URIvariável do servidor na RewriteRulediretiva e evite a referência anterior. Por exemplo:

 :
 RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

A REQUEST_URIvariá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.

informação relacionada