¿Cómo podemos realizar una redirección 301 de más de 200 páginas a las 200 páginas correspondientes en una nueva ubicación?

¿Cómo podemos realizar una redirección 301 de más de 200 páginas a las 200 páginas correspondientes en una nueva ubicación?

Necesito ayuda y la necesito rápido.

Recientemente, migramos un subdominio para integrarlo con el dominio.

P.ej. https://blog.example.comahttps://www.example.com/blog

https://blog.example.comtiene un montón de tráfico que no queremos perder. Entonces necesitamos hacer redirecciones 301.

El problema es que https://blog.example.comtiene más de 200 páginas que funcionan bien.

Necesito consejos sobre cómo podemos redirigir todas las páginas a sus páginas correspondientes en la nueva ubicación sin ralentizar el sitio web ni sobrecargar el servidor.

Nosotros tratamos

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]

Pero sólo el pahe de casa fue redirigido.

¿Tenemos que redirigir cada una de esas páginas una por una?

Respuesta1

Nosotros tratamos

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]

Dijiste que "migró recientemente un subdominio", sin embargo, el código que publicó no está dirigido a un subdominio y entra en conflicto con los nombres de host de ejemplo que describió en la pregunta.

Esto redirigirá "sólo el pahe de inicio" si lo ha colocado en el lugar equivocado del .htaccessarchivo. p.ej. Si lo has colocadodespuésuna reescritura interna a un controlador frontal. Esta redirección debería ir a la parte superior de su .htaccessarchivo raíz.

sin ralentizar el sitio web ni sobrecargar el servidor.

200 redireccionamientos de URL similares son insignificantes en términos de rendimiento/gastos generales. Sin embargo, para minimizar por completo todo el impacto que puedan tener estas redirecciones, el blogsubdominio debe apuntar a un área diferente del sistema de archivos, lo que simplifica aún más la redirección. (De hecho, no es necesario que apunte el subdominio a ningún directorio en particular y, en su lugar, realice la redirección directamente en la configuración del servidor/host virtual, no .htaccess).

Sus "200 redirecciones" se pueden realizar con una única Redirectdirectiva mod_alias (en .htaccesso <VirtualHost>contenedor). Por ejemplo:

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

La Redirectdirectiva coincide con prefijos y todo lo que sigue a la coincidencia se copia al final de la URL de destino. Entonces, por ejemplo, http(s)://blog.example.com/anything¿se redirige 301 a https://www.example.com/blog/anything.

De lo contrario, si su subdominio y dominio principal apuntan al mismo lugar en el sistema de archivos, utilice mod_rewrite para verificar el nombre de host solicitado, de manera muy similar a como lo hizo inicialmente (aunque no estoy seguro de por qué estaba verificandoexample.com o www.example.comcuando debería haber estado buscando el subdominio blog.example.com).

Por ejemplo, en elmuy superiordel archivo raíz .htaccess:

 RewriteEngine On

 RewriteCond %{HTTP_HOST} ^blog\.example\.com [NC]
 RewriteRule (.*) https://www.example.com/$1 [R=301,L]

La NCbandera es superflua ya que la expresión regular .*ya coincide con todo.

O bien, utilice la REQUEST_URIvariable del servidor en la RewriteRuledirectiva y evite la referencia inversa. Por ejemplo:

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

La REQUEST_URIvariable del servidor ya incluye el prefijo de barra diagonal.

Pruebe primero con una redirección 302 (temporal) para evitar posibles problemas de almacenamiento en caché. Y asegúrese de haber borrado la memoria caché de su navegador antes de realizar la prueba.

información relacionada