Guía Para Principiantes: Todo Lo Que Debes Saber Sobre el Archivo .htaccess De WordPress

by Jason Cosper
Guía Para Principiantes: Todo Lo Que Debes Saber Sobre el Archivo .htaccess De WordPress thumbnail

La gran prioridad (o una de las principales) para cada administrador de sitio web, debería ser que su sitio sea seguro. WordPress es una plataforma segura fuera de lo común, pero eso no significa que sea invulnerable ante ataques. Afortunadamente, puedes usar un archivo llamado .htaccess para fortalecer las políticas de seguridad de tu sitio, así no seas un experto en seguridad.

El .htaccess es un archivo de configuración para los servidores web de Apache, hogar de muchos sitios de WordPress. Es una herramienta poderosa que te permitirá proteger tu sitio y potenciar su desarrollo, haciendo pequeños ajustes en su código. Al editar este archivo, podrás suspender seguidores, crear redirecciones, prevenir ataques y hasta evitar el acceso a áreas específicas de tu sitio.

Una Introducción al Archivo .htaccess

.htaccess es una abreviatura para “HyperText Access”, o “Acceso con Hipertexto”. Es un archivo de configuración que determina cómo interactúan tu sitio y los servidores basados en Apache. En términos más simples, el .htaccess controla cómo se accede a archivos en un directorio. Ampliando la descripción, es un seguro para tu sitio, porque con esto tú decides a quién dejas entrar a tu sitio y qué pueden hacer en él.

Por defecto, un archivo .htaccess estará normalmente incluido en tu instalación de WordPress. El propósito principal de este archivo es mejorar la seguridad y el rendimiento de tu sitio. Además, te permitirá anular configuraciones de tu servidor web.

Lo más probable es que puedas encontrar tu archivo .htaccess en el directorio raíz de tu sitio. Dado que el .htaccess aplica tanto para su propio directorio como a cualquier subdirectorio dentro de la carpeta principal, por defecto, impactará todo tu sitio de WordPress.

También vale la pena destacar que el archivo .htaccess no tiene una extensión de archivo. El punto al comienzo existe simplemente para asegurarse de que este archivo se mantendrá escondido.

Cómo Editar Tu Archivo .htaccess de WordPress

Editar el archivo .htaccess es, en la práctica, tan simple como editar cualquier otro archivo de texto. Sin embargo, como es un archivo core, o principal, puede llevarte a consecuencias inesperadas si le haces cambios.

Por esto, es realmente importante que hagas un backup a tu sitio antes de comenzar, sin importar si eres un principiante en el tema o un desarrollador experimentado.

Cuando estés listo para editar tu archivo .htaccess, puedes ingresar a él mediante el uso de un Secure File Transfer Protocol (SFTP) o Secure Shell (SSH). Encontrarás el .htaccess en el directorio raíz de tu sitio:

Archivo .htaccess de un sitio WordPress a través de SFTP

Abre el archivo utilizando tu editor de texto preferido, como TextEdit o Notepad. Si el archivo nunca antes ha sido editado, verás la siguiente información predeterminada:

Ejemplo de código en un archivo .htacccess de WordPress

Es importante no añadir o cambiar nada antes de las etiquetas # BEGIN y # END. En cambio, todo el código nuevo debe ser añadido después de ese bloque de texto.

A estas alturas, solo te faltará escribir tu código y guardar el archivo. Cuando estás añadiendo varias funciones nuevas, lo mejor es guardar y probar cada una por separado. De este modo, si hay algún error, será mucho más fácil entender cuál cambio lo causó para entonces solucionarlo.

Aunque casi todas las instalaciones en WordPress ya tendrán incluido un archivo .htaccess, habrá algunos casos en que tendrás que crearlo. Puedes hacerlo usando el editor de texto de tu preferencia, mientras lo guardes con el nombre de archivo correcto: .htaccess sin extensión.

También es muy importante hacer las configuraciones de permisos de archivo correctamente. Luego podrás subir el archivo .htaccess al directorio raíz de tu sitio.

9 Cosas Que Puedes Hacer Con Tu Archivo .htaccess de WordPress

Ahora que te has familiarizado más con el archivo .htaccess, es hora de profundizar un poco. Vamos a presentarte algunas maneras fáciles de editarlo, para que logres potenciar la seguridad y el desempeño de tu sitio. 

Solo utiliza los fragmentos de código que te proporcionaremos más adelante. ¡Y recuerda crear una copia de seguridad antes de comenzar!

1. Niega El Acceso A Partes De Tu Sitio

Una de las cosas más útiles que puedes hacer con un .htaccess es negar el acceso a ciertas páginas y archivos. Hay algunos archivos que deberías considerar esconder por razones de seguridad, como tu archivo de wp-config.php.

Puedes hacer esto añadiendo el siguiente código, el cual causará un error 404 si alguien intenta ver el archivo:

<Files ~ "/wp-config.php">
Order Allow,Deny
Deny from All
</Files>

Cuando los datos sensibles deben esconderse, también puede ser útil restringir el acceso al directorio correspondiente. Ya que muchos sitios de WordPress usan la misma estructura de carpetas, esta configuración puede dejar vulnerable a tu sitio. Pero si añades la siguiente línea, desactivarás la función de listado de directorios por defecto:

Options -Indexes

Esto detendrá a los robots y usuarios para que no puedan ver tu estructura de carpetas. Entonces, si alguien trata de acceder, le saldrá, en cambio, una página de error 403.

2. Redirigir y Reescribir URLs

Crear redirecciones te permitirá enviar usuarios automáticamente a una página específica. Las redirecciones pueden ser particularmente útiles si una página ha sido movida o borrada, y quieres que los usuarios que intentaron acceder sean llevados a otro lado.

Puedes lograr esto con un plugin como Redirection, pero también es posible hacerlo si editas el archivo .htaccess. Entonces, para crear una redirección, usa este código:

Redirect /oldfile.html http://www.example.com/newfile.html

Probablemente, puedes ver lo que está pasando aquí. La primera parte es la ruta al archivo antiguo, ese que quieres esconder, mientras que la segunda es la URL a donde quieres que tus visitantes sean redirigidos.

Recibe contenido directamente en tu bandeja de entrada

Suscríbete ahora para recibir todas las últimas actualizaciones, directamente en tu bandeja de entrada.

3. Fuerza Tu Sitio a Cargar De Modo Seguro Con HTTPS

Si has añadido un certificado SSL a tu dominio, como el certificado gratuito Let’s Encrypt de DreamHost, es buena idea forzar a que tu sitio cargue usando HTTPS. Esto asegurará que sea seguro tanto para ti, como para tus visitantes.

Puedes hacer esto, añadiendo el siguiente código:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

En este orden de ideas, tu sitio ahora redireccionará automáticamente cualquier solicitud HTTP y las redirigirá a utilizar HTTPS. De modo más gráfico, si un visitante trata de ingresar a http://www.ejemplo.com, será redireccionado de inmediato a https://www.ejemplo.com.

4. Cambiar Configuraciones de Caché

El almacenamiento en caché es un proceso en el cual se guardan temporalmente algunos archivos en el dispositivo local de tus visitantes, para permitir que las páginas carguen más rápido. Usando un .htaccess, podrás cambiar la cantidad de tiempo que duran tus archivos guardados en el caché del navegador hasta que sean actualizados con nuevas versiones.

Hay unas pocas maneras de hacer esto, pero, con fines ilustrativos, usaremos en este ejemplo una función llamada mod_headers. El siguiente código cambiará el tiempo máximo que el caché será guardado para todos los archivos que lleven extensiones como jpg, jpeg, png y gif:

<ifModule mod_headers.c>
<filesMatch "\\.(jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>

En este ejemplo se configuró el tiempo máximo a 2,592,000 segundos, lo que equivale a 30 días. Podrás cambiar esta cantidad si lo deseas, así como las extensiones de archivo que serán afectadas. Si quieres añadir diferentes configuraciones para diversas extensiones, es fácil. Solo agrega más funciones de tipo mod_header.

5. Prevenir Ciertos Ataques de Script Injection

Los ataques de Inyección de Script (o ‘Inyección de código’), intentan cambiar el funcionamiento de un sitio web o aplicación, añadiendo código inválido. Por ejemplo, alguien puede añadir un script a un campo de texto en tu sitio y luego añadirlo a tu código, lo que podría ocasionar que tu sitio ejecute dicho script.

Puedes añadir este código para proteger tu sitio de varios tipos de Inyección de Script:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Tu sitio debería ser ahora capaz de detectar y detener los intentos de inyección de script y redireccionar al responsable a tu página de index.php.

Sin embargo, es importante tener en cuenta que con este ejemplo no te protegerás contra todas las clases de ataques de inyección. Mientras este particular código puede ser muy efectivo, no deberías usarlo como la única protección contra este tipo de ataques.

6. Detener Ataques ‘Username Enumeration’

El ‘username enumeration’, o enumeración de nombres de usuario, es un proceso mediante el cual se recolectan justamente los nombres de usuario de tu sitio, revisando cada página de autor de cada usuario. Esto puede ser muy problemático si alguien consigue encontrar tu nombre de administrador, lo que hará mucho más fácil para los bots el obtener acceso a tu sitio.

Puedes ayudar a prevenir el username enumeration añadiendo este código:

RewriteCond %{REQUEST_URI} !^/wp-admin [NC]
RewriteCond %{QUERY_STRING} author=\d
RewriteRule .* - [R=403,L]

Esto ayudará a detener ciertos intentos de enumeración de usuarios y, en cambio, mostrará una página de error 403. Ten presente que no siempre prevendrá todo tipo de enumeración, así que deberás probar tu seguridad más a fondo. Por eso, recomendamos fortalecer tu página de inicio de sesión implementando la Autenticación Multifactor.

7. Previene el Image Hotlinking 

El Image hotlinking, o enlace directo de imágenes, es un problema común que ocurre cuando las imágenes de tu servidor están siendo visualizadas en otro sitio web. Puedes detener esto añadiendo el siguiente código a tu archivo .htaccess:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/.*$ [NC]
RewriteRule \.(png|gif|jpg|jpeg)$ https://www.example.com/wp-content/uploads/hotlink.gif [R,L]

Reemplaza example.com con tu propio dominio y este código prevendrá que las imágenes puedan cargar en otros sitios. En cambio, solo cargará la imagen que especifiques en la última línea de este código. Puedes usar esto para enviar una imagen alternativa a los sitios que intenten visualizar imágenes o gráficos desde tu servidor.

Ten cuidado porque esto puede causar problemas cuando quieras que tus imágenes aparezcan nuevamente fuera de tu página, por ejemplo, en motores de búsqueda. Te recomendamos, entonces, considerar enlazar a un script en lugar de a una imagen estática, luego responder con una imagen con marca de agua o una imagen que contenga un anuncio.

8. Controla Tus Extensiones de Archivo

Usando .htaccess, puedes controlar cómo cargan en tu sitio archivos de diferentes extensiones. Hay mucho que puedes aprovechar de esta característica, como ejecutar archivos como PHP, pero en esta ocasión te mostraremos un ejemplo más básico.

El siguiente código elimina la extensión de archivo de tus archivos PHP, una vez están cargados. Puedes usarlo con cualquier tipo de archivo, mientras reemplaces en todos los casos la etiqueta “php” con la extensión que deseas o necesitas:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\ HTTP/
RewriteRule ^(.*)index$ http://example.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.php\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/$1 [L,R=301]
RewriteRule ^([a-z]+)$ /$1.php [L]

Esto causará que todos los archivos PHP carguen sin mostrar sus extensiones en la URL. Por ejemplo, el archivo index.php aparecerá solo como index.

9. Forzar La Descarga de Archivos

Finalmente, cuando un archivo es solicitado en tu sitio, el conducto regular del sistema es mostrarlo en el navegador. Por ejemplo, si estás alojando un archivo de audio, este empezará a reproducirse en el navegador en lugar de guardarse en el computador de tus visitantes.

Puedes cambiar eso, forzando al sitio a que descargue los archivos, mediante este código:

AddType application/octet-stream mp3

En este ejemplo, hemos utilizado un archivo mp3, pero podrás utilizar la misma función para txt, mov, o cualquier otra extensión que consideres relevante.

Mejora La Seguridad Y Rendimiento de Tu Sitio Web

El archivo .htaccess ofrece flexibilidad para que puedas controlar el comportamiento de tu servidor. También puedes usarlo para mejorar el desempeño de tu sitio y además, para tener un mayor control sobre quién puede (y quién no) acceder a tu información y datos sensibles.

Con un .htaccess, puedes negar el acceso a partes específicas de tu sitio web. Adicionalmente, te permite redireccionar URLs, forzar tu sitio a que cargue como HTTPS y prevenir ataques de inyección de script.

Editar tu archivo .htaccess es solo una manera de mejorar la seguridad de tu sitio. Pero elegir un proveedor seguro de alojamiento de WordPress es otra y muy útil. Échale un vistazo a nuestros planes de alojamiento administrado de DreamPress para conocer cómo podemos impulsar el rendimiento y seguridad de tu sitio web.

Imagen de fondo del anuncio

Haz Más Con DreamPress

¡Los usuarios de DreamPress Plus y Pro obtienen acceso a Jetpack Professional (y más de 200 temas prémium) sin costo adicional!

Adquiere Tu Plan Hoy

Jason es el Promotor de Productos de WordPress de DreamHost, ubicado en Bakersfield, CA. Actualmente está trabajando para mejorar nuestro producto DreamPress aún más. En su tiempo libre, le gusta acurrucarse en el sofá y ver películas de terror con su esposa Sarah y tres perros muy pequeños. Síguelo en Twitter.