Actualizado el domingo, 19 noviembre, 2017
A veces cambiamos de sitio una página de nuestro sitio web, la cambiamos de directorio, la renombramos o simplemente debemos eliminarla. Debemos tomar alguna medida para que por un lado los buscadores sepan que esa url que tienen indexada ha cambiado o desaparecido y que por otro lado los usuarios cuando nos visiten tengan el contenido disponible actualizado y no un error 404 de página no encontrada. Te propongo varios ejemplos que seguro te serán de mucha utilidad.
Para redireccionar un dominio a un nuevo dominio:
Redirect 301 / http://www.nuevodominio.com/
Para redireccionar todo el contenido de un dominio a la página inicial del nuevo dominio:
RedirectMatch 301 ^(.*)$ http://www.nuevodominio.com/
Para redireccionar un sitio web completo a otra URL:
RewriteEngine on RewriteCond %{HTTP_HOST} ^sudominio.com$ [OR] RewriteCond %{HTTP_HOST} ^www.sudominio.com$ rewriterule ^(.*)$ http://www.nuevodominio.com [R=301,L]
Ejemplo, si alguien escribe http://sudominio.com/post lo redireccionará a
Para redireccionar una URL a otra URL:
Redirect 301 /actual-pagina.htm http://www.sudominio.com/nueva-pagina.htm
Para redireccionar un directorio antiguo de un dominio a otro nuevo directorio:
Redirect 301 /antiguo-directorio/ http://www.sudominio.com/nuevo-directorio/
Para redireccionar un directorio y su contenido que vas a eliminar, a otro directorio:
RedirectMatch 301 ^/antiguo-directorio/(.*)$
Para redireccionar de www a sin www:
Options +FollowSymlinks (en caso de error 500, borrar esta linea) RewriteEngine On RewriteCond %{HTTP_HOST} ^www.sudominio.com [NC] RewriteRule ^(.*)$https://www.sololinux.es/ [R=301,L]
Para redireccionar desde sin www. a www:
Options +FollowSymlinks (en caso de error 500, borrar esta linea) RewriteEngine on RewriteCond %{HTTP_HOST} ^sudominio.com [NC] RewriteRule ^(.*)$ [R=301,L]
Para redireccionar un sitio completo a https:
RewriteEngine on RewriteOptions inherit RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ https://sudominio.com/sales [R,L] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://sudominio.com/sales [R,L]
Para redireccionar un directorio de su web a https:
RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} NOMBRE_DIRECTORIO RewriteRule ^(.*)$ [R,L]
Para redireccionar un subdominio a dominio principal:
Options +FollowSymlinks (en caso de error 500, borrar esta linea) RewriteCond %{HTTP_HOST} ^subdir\.dominio\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.subdir\.dominio\.com$ RewriteRule ^/?$ “http\:\/\/www\.dominio\.com” [R=301,L]
Para eliminar contenido duplicado del tipo, index.html, index.php:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/ RewriteRule ^(([^/]+/)*)index\.html$ [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/ RewriteRule ^(([^/]+/)*)index\.php$ [R=301,L]
Para evitar contenido duplicado por ser accesible por ip:
RewriteCond %{HTTP_HOST} ^00\.00\.000\.000 (coloca la IP) RewriteRule (.*) R=301,L
Listado y explicacion de las indicaciones añadidas:
- R: (redirect) para forzar una redirección HTTP
- F: (forbidden) para prohibir el acceso
- G: (gone) para eliminar la URL
- P: (proxy) para pasar la URL a mod_proxy.
- L: (last) para detener el procesamiento.
- N: (next) para continuar
- C: (chain) para encadenar la regla activa con la siguiente
- F: (type) para obligar un determinado tipo MIME.
- NS: (nosubreq) para segurarse que la regla sólo se aplica si no se realizan subpeticiones internas.
- NC: (nocase) para que la URL no distinga mayúsculas de minúsculas.
- QSA: (qsappend) para añadir una nueva cadena de consulta (query string) en lugar de sustituirla.
- PT: (passthrough) para asar la URL modificada a otro módulo apache.
- S: (skip) para saltar la siguiente regla.
- E: (env) para asignar una variable de entorno.