Hacer un redirect 301 en .htaccess es muy sencillo. Este redireción se utiliza cuando necesitamos cambiar urls de nuestras webs y no perder el posicionamiento de dichas urls al redirigirlas.
Esta redirección avisa a los buscadores que el contenido se ha redirigido permanentemente a otra url. Entonces los buscadores reindexan las nuevas urls y no perdemos el posicionamiento que teníamos ganado anteriormente.
Es importante que cuando hablo de url me refiero que las redirecciones se pueden aplicar tanto a ficheros del servidor como a las páginas.
Los casos prácticos los voy a hacer en .htaccess, aunque también se puede hacer con la función Header() en PHP.
Entre los ejemplos veremos casos prácticos como la redirección de una URL, redirección de dominio y redirección de directorio. Las funciones usadas serán:
Os puede resultar interesante la siguiente entrada:
En este código de ejemplo queremos redirigir una url a otra url de la misma página.
RewriteEngine On RewriteBase / Redirect 301 /urlactual.html https://www.tudominio.com/urlnueva.html
El uso de expresiones regulares en .htaccess es muy usado dado el ahorro de código que supone.
RewriteEngine On RewriteBase / #redirect de todo el contenido de una web a otro dominio respetando la estructura de urls, veamos 2 maneras de hacerlo RedirectMatch 301 /(.*) https://www.tudominio.com/$1 RedirectMatch permanent /(.*) http://wwws.tudominio.com/$1 #redirect de todo el contenido de una web a la home de otro domino, os pongo 2 ejemplos RedirectMatch 301 ^(.*)$ https://www.sitio.com RedirectMatch permanent ^(.*)$ https://www.sitio.com #redirect del contenido de un directorio a otro nuevo respetando estructura de urls a partir del directorio redirigido, también vale si la dirección nueva está en otro dominio RedirectMatch 301 /directorio-actual/(.*) https://www.tudominio.com/directorio-nuevo/$1 RedirectMatch permanent /directorio-actual/(.*) https://www.tudominio.com/directorio-nuevo/$1
RewriteRule hace la misma función que RedirectMatch solo que con diferente declaración, os pongo un ejemplo.
RewriteEngine On RewriteBase / RewriteRule /directorio-actual/(.*) https://www.tudominio.com/directorio-nuevo/$1 [R=301,L]
Con estas 3 maneras de hacer redirect 301 cubrimos la mayor parte de necesidades con las que nos encontraremos habitualmente.