Inicio > Internet > Redireccionar desde el .htacess

Redireccionar desde el .htacess

Con el .htaccess puede redireccionar su dominio a una URL existente, a https, o nuevo dominio.

El .htaccess es un archivo oculto, para crear un archivo .htaccess puede utilizar un bloc de texto y a la hora de guardar el archivo el nombre que debe de utilizar es .htaccess, por último solamente deberá de publicarlo en la dirección que desea que se produzca dicha redirección.

Ahora comencemos con los ejemplos de redirección que podemos implementar:

1. Redireccionamiento de un Dominio:

 

Si quieres mover tu dominio a un dominio nuevo por el motivo que sea, manteniendo toda la estructura de URLs, lo que debes insertar en el archivo .htaccess es lo siguiente:

Redirect 301 / http://newdomain.com/

Si quieres mover tu dominio completo, con todo el contenido a la raiz del dominio nuevo, lo que debes hacer es lo siguiente:

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

2. Redireccionamiento de un Directorio:

 

Si quieres mover un directorio manteniendo toda la estructura que cuelga del mismo, lo que debes hacer es lo siguiente:

Redirect 301 /antiguo-directorio/ http://dominio.com/nuevo-directorio/

 

3. Redireccionamiento de una Página:

 

Si queremos redireccionar una página a otra:

Redirect 301 /pagina-antigua/ http://dominio.com/pagina-nueva/

 

4. Redireccionar las extensiones html a php

 

Si queremos redireccionar los .html a los .php debemos incluir la siguiente linea:

RedirectMatch 301 (.*)\.html$ https://dominio.com$1.php

 

5. Redireccionar de un dominio viejo a uno nuevo

 

RewriteEngine On
RewriteBase /
RewriteRule (.*) http://www.nuevodominio.com/$1 [R=301,L]

6. Redireccionar todo a www

 

Toda nuestra página será vista bajo http://www.dominio.com en vez de solo dominio.com y así evitaremos el contenido duplicado en Google.

RewriteEngine On
RewriteBase /
Rewritecond %{http_host} ^domain.com [nc]
Rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

 

7. Redireccionar de un dominio viejo a uno nuevo con el path y una variable GET

 

 Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.nuevodominio.com%{REQUEST_URI} [R=302,NC]

URL Original: http://www.viejodominio.com/frutas/verduras.php?id=23

URL Destino: http://www.nuevodominio.com/frutas/verduras.php?id=23

 

8. Redireccionar una URL con una variable GET

 

RewriteEngine On
RewriteCond %{QUERY_STRING} id=23
RewriteRule ^index\.php$ /nueva-ruta/? [L,R=301]

URL Original: http://www.ejemplo.com/index.php?id=23

URL Destino: http://www.ejemplo.com/nueva-ruta/

 

9. Redireccionar un directorio entero

 

RewriteEngine On
RewriteRule ^viejo/?$ $1/nuevo$2 [R=301,L]
Otra opción sería con el RedirectMatch:

RedirectMatch 301 ^/viejo/$ http://www.domino.com/nuevo

URL Original: http://www.ejemplo.com/viejo/pagina.html

URL Destino: http://www.ejemplo.com/nuevo/pagina.html

 

10. Redireccionar a usuarios que utilizan dispositivos móviles

 

RewriteEngine on
# Para un directorio
RewriteCond %{HTTP_USER_AGENT} iPad|iPhone
RewriteCond %{REQUEST_URI} !^/Folder Name/
RewriteRule .* /Folder Name/ [R]

# Para un subdominio
RewriteCond %{HTTP_USER_AGENT} iPad|iPhone
RewriteRule .* http://iphone.ejemplo.com/ [R]

# Otros User-Agent
RewriteCond %{HTTP_USER_AGENT} Android|Blackberry|iPad|iPhone|ipod|iemo­bile|opera\ mobile|palmos|webos|googlebot-mobile

Banderas

Si os fijáis al lado de [R=301,L] en todas las instrucciones previas que os he mencionado hay una L, esto es una bandera que sirve para indicar un tipo de acción. Si hay varias banderas se separan por comas y siempre van entre corchetes tal como se muestra en el ejemplo.

Algunas banderas con sus correspondientes significados son:

  • 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.

Impedir listar el directorio

 

Si tienes una carpeta en el servidor web utilizada para almacenar archivos como los eBooks, software legal, etc., si la carpeta no tiene archivo index.html, los visitantes pueden ver todos los archivos dentro de la carpeta sin problemas. En este caso puedes utilizar el código siguiente para evitar que esto suceda.

Options -Indexes

 

Orden de ejecución de archivos

 

Si tienes tanto el archivo index.html como el archivo index.php en la carpeta /public_html, el archivo index.html tiene mayor prioridad y se ejecutará en primer lugar. Aunque la mayoría de scripts web utilizan el archivo index.php como punto de partida. Si se puede eliminar el archivo index.html, se soluciona el problema, aunque no siempre es así y en estos casos hay una mejor solución que es utilizar el siguiente código para dar prioridad al archivo index.php en vez de index.html.

DirectoryIndex index.php index.html

 

Comprimir archivos CSS, JavaScript, XML y texto

 

El siguiente código está diseñado para comprimir el código de salida CSS, JavaScript, XML y de texto antes de ser mostrado en el navegador. La idea básica es ahorrar tiempo en la carga y no consumir tanto ancho de banda.

<ifmodule>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
</ifmodule>

 

Almacenamiento en caché de imágenes

 

Cada vez que recibimos visitas en la web, el servidor web obtiene todos los archivos necesarios, tales como archivos CSS y JavaScript, así como fotos e imágenes para poder mostrarla. Podemos usar el código de abajo para gestionar los archivos de caché, y que cuando un visitante vuelva a visitarnos por segunda vez, el servidor cargue el archivo de la caché lo que acelerará el tiempo de carga sitio web.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif A432000
ExpiresByType image/jpg A432000
ExpiresByType image/jpeg A432000
ExpiresByType image/png A432000
ExpiresByType image/ico A432000
ExpiresByType image/bmp A432000
ExpiresByType text/css A432000
ExpiresByType text/javascript A432000
ExpiresByType application/javascript A432000
ExpiresByType application/x-javascript A432000
</ifmodule>

El código anterior guarda caché de los archivos durante cinco días o 432.000 segundos. Puedes cambiar el período de almacenamiento en caché, asegurándote de utilizar el valor expresado en segundos.

 

Proteger el archivo .htaccess

 

El siguiente código evita que tu archivo .htaccess puedan ser leído directamente desde el navegador web.

<Files .htaccess>
Order allow,deny
Deny from all
</Files>

 

Prevenir el hotlinking

 

A veces, otros webmasters, hacen suyas las imágenes de nuestras webs, artículos, etc., afectando con ello el ancho de banda de que disponemos en nuestro Hosting. Si además ellos tienen una gran cantidad de visitantes al día, estos van a utilizar nuestro ancho de banda del servidor para visualizar nuestras imágenes en la web ajena a nosotros.

Se puede utilizar el código que se muestra a continuación para evitar el hotlinking, y de esta forma reemplazar la imagen original por otra con algún aviso para hacerles saber que la imagen es nuestra o que el hotlinking es una mala práctica.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?webempresa\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpg|gif|bmp|png)$ http://hotlink.webempresa.com/no_se_permite_hotlinking.jpg [L]

Puedes subir la imagen a un sitio de alojamiento de imágenes como ImageShack para evitar que tu ancho de banda se vea afectado.

 

Forzar el uso de SSL

 

Este código fuerza a utilizar SSL, no permitiendo conexiones http. Para evitar escuchas en http:// utilizamos por debajo la directiva ErrorDocument.

SSLOptions + StrictRequire
SSLRequireSSL

Cuando una línea comienza por # es un comentario que no tiene ningún efecto.

 

Redireccionar de HTTP a HTTPS

 

Cabe decir que es necesario disponer de un Certificado SSL instalado en el Hosting para poder hacer uso de este protocolo más seguro.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tudominio.com/$1 [R,L]

 

Redireccionar de HTTPS a HTTP

 

Puede darse el caso que aún teniendo un Certificado SSL instalado (Comodo, Let’s Encrypt, etc) quieras forzar el tráfico encriptado SSL para que se sirva con HTTP por diversas razones (pruebas con plugins conflictivos, configuración de una pasarela pago que no trabaja bien por HTTPS, etc), en cuyo caso códigos como el siguiente te permitirán pasar de HTTPS a HTTP sin desinstalar el Certificado SSL de tu Hosting.

# Enviar trafico HTTPS a HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Este código debes colocarlo por encima de cualquier otro código de redireccionamiento, al principio del archivo .htaccess.

 

Forzar la carga de index.html

 

Para que un sitio HTML funcione sin añadir index.html deberías apuntar un dominio o un subdominio directamente a la carpeta que contenga la web, de modo que solo llamando a http://dominio.com o subdominio.dominio.com (por ejemplo) cargue la web HMTL sin necesidad de añadir el archivo index.html.

Si una web se llama desde una ruta como http://domino.com/otra_carpeta/ es normal que tengas que añadir el archivo index.html para que el navegador sepa que debe cargar.

No obstante puedes forzar mediante .htaccess para que cargue el archivo index.html sin tener que escribirlo en el navegador.

RewriteEngine on
RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L]
Anuncios
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: