Redireccion con .htacces

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.

 

Agregar comentario