Redireccion 301 htaccess para evitar el 404
By Agencia MDW In Codigo webSeguramente, este es el código redirección 301 que estás buscando para incluirlo en el htaccess:
Redirect 301 /paginaoriginal.html http://www.midominio.com/paginanueva.html
Las redirecciones 301 se usan tanto para la canonicalización del dominio, como para indicar que una página ha cambiado de nombre, ha sido eliminada o movida a otro directorio. Esta acción evita que salga el error 404 de página no encontrada que nos puede perjudicar en el SEO, y lo más importante, que además es muy frustrante para los usuarios.
Manipulando el .htaccess
La redirección 301 se hace desde el .htaccess que es un archivo que se usa para configurar el servidor. Si no está, debes crearlo en la raíz de tu Sitio accediendo a ella por FTP. Puede que esté oculto o restringido, si no lo encuentras ponte en contacto con el proveedor de tu hosting. Editar el .htaccess es una acción bastante delicada por eso recomendamos que siempre se hagan copias de seguridad antes de empezar la edición, por si no nos funcionara poder volver al estado original inmediatamente.
Canonicalización de la url
Si lo que queremos es evitar el problema de tener dos versiones del mismo sitio web: midominio.com y www.midominio.com, lo que vamos a hacer es indicar que todo lo que está en midominio.com pertenece a www.midominio.com, asi el dominio siempre se mostrara con las www aunque el usuario entre sin escribirlas:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^midominio\.com[NC]
RewriteRule ^(.*)$ «http\:\/\/www\.midominio\.com\/$1» [R=301,L]
</IfModule>
O si preferimos hacerlo al contrario, de www.midominio.com a midominio.com:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.midominio\.com$ [NC]
RewriteRule ^(.*)$ «http:\/\/midominio.com\/$1» [R=301,L]
</IfModule>
Redireccionar un directorio
Es practicamente el mismo código que se utiliza para redireccionar una página:
Redirect 301 /directoriooriginal/ http://www.midominio.com/directorionuevo/
Si queremos que se respete la estructura de url existente para el contenido:
RedirectMatch 301 ^/directoriooriginal/(.*)$ http://www.midominio.com/directorionuevo/$1
Redireccionar un subdirectorio
Redirect 301 /directorio/subdirooriginal/ http://www.midominio.com/directorio/subdirnuevo/
Si queremos que se respete la estructura de url existente para el contenido:
RedirectMatch 301 ^/directorio/subdirorig/(.*)$ http://www.midominio.com/directorio/subdirnuevo/$1
Redireccionar un directorio a un dominio respetando la estructura de url existente
RedirectMatch 301 ^/directorio/(.*)$ http://www.nuevodominio.com/$1
Redireccionar una web completa a otro dominio con todo el contenido
RedirectMatch 301 ^/(.*)$ http://www.midominio.com/$1
Redireccionar un subdominio a midominio
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdom\.midominio\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.subdom\.midominio\.com$
RewriteRule ^/?$ «http\:\/\/www\.midominio\.com\/$1» [R=301,L]
Si te devuelve un error 500 de servidor es que necesitas incluir antes esta linea:
Options +FollowSymlinks por la configuración de tu servidor.
Quedaría pues:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdom\.midominio\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.subdom\.midominio\.com$
RewriteRule ^/?$ «http\:\/\/www\.midominio\.com\/$1» [R=301,L]