Utilizar .htaccess para redireccionar

Apache server

El archivo .htaccess es usado frecuentemente para especificar restricciones de seguridad para un directorio en particular. Los directorios usan el .htaccess para reescribir urls largas y complejas en otras más simples y fáciles de recordar, permiten bloquear usuarios por su dirección ip, dominio, bots y arañas web. Tambien permiten controlar los errores generados del lado del servidor. 

Al momento de crear un .htaccess se debe recordar que este no tiene una extensión como cualquier otro archivo, se debe guardar en modo ASCCI y no en binario. Programas como el bloc de notas tienden a agregarle automáticamente la extensión .txt pero hay que quitarla. Otro punto a tener en cuenta es que el archivo debe tener permisos de lectura-escritura-ejecución (CHMOD) 644. Con esto hacemos que el archivo pueda ser usado por el servidor pero se previene que sea accedido a través del navegador. Más adelante veremos que el .htaccess también puede ser protegido mediante un par de lineas.

Apache Server configuracion del archivo .htaccess

Los .htaccess están habilitados por defecto, pero se puede dar el caso en que no lo esté. Este comportamiento se controla a través de la directiva AllowOverride que se encuentra en el archivo de configuración httpd.conf

Gracias al .htaccess podemos controlar el comportamiento de nuestro sitios y aplicaciones Web para que estos sean un poco más seguros, hacer redirecciones, crear mensajes de error más personalizados, restringir el acceso a determinadas carpetas, evitar que se listen directorios específicos, etc.

El .htaccess por lo general siempre estará ubicado en el directorio raíz de nuestros sitios Web, también puede estar ubicado en directorios específicos dentro de un servidor Web pero por regla general, debería existir uno en todo directorio raíz.

En este artículo explicaremos como usar .htaccess para rediccionar páginas web, url antiguas, directorios etc.

Redireccionar de un dominio a otro:

Redirect 301 / http://www.dominionuevo.com

Redireccionar todo el contenido de un dominio a la página inicial de otro dominio

RedirectMatch 301 ^(.*)$ http://www.dominionuevo.com

Redireccionar página web completa a otra url

RewriteEngine on
RewriteCond %{HTTP_HOST} ^tu-dominio.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.tu-dominio.com$ rewriterule ^(.*)$ http://www.nuevodominio.com [R=301,L]

Nota: Si alguien escribe cualquier cosa después del dominio siempre lo redireccionará a la nueva URL.

http://sudominio.com/pagina-web lo redireccionará a http://nuevodmominio.com 

Redireccionar una url a otra url ( Importante para cuando estamos haciendo seo en nuestra página web y cambiamos el nombre de la url, se debe redireccionar la url antigua por la nueva)

Redirect 301 /vieja-pagina.html http://www.tu-dominio.com/nueva-pagina.html

Redireccionar directorio antiguo de un dominio a otro directorio nuevo

Redirect 301 /viejo-directorio/
http://www.tu-dominio.com/nuevo-directorio/

Redireccionar directorio completo que vas a eliminar a otro directorio

RedirectMatch 301 ^/viejo-directorio/(.*)$
http://www.tu-dominio.com/nueva-pagina

Redireccionar de www a sin www

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.tu-dominio.com [NC]
RewriteRule ^(.*)$
http://tu-dominio.com/$1 [R=301,L]

Redireccionar de sin www a www

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^tu-dominio.com [NC]
RewriteRule ^(.*)$
http://www.tu-dominio.com/$1
[R=301,L]

Redireccionar página web completa de http a https

RewriteEngine on
RewriteOptions inherit
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$
https://tu-dominio.com
[R,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$
https://tu-dominio.com
[R,L]

Redireccionar directorio web de su web a https

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} NOMBRE_DIRECTORIO
RewriteRule ^(.*)$ https://tu-dominio.com/NOMBRE_DIRECTORIO/$1 [R,L]