¿Qué es el archivo .htaccess y cómo se usa en WordPress?

Publicado: 2020-10-27

Es posible que haya oído hablar del archivo .htaccess antes, pero no tenía ni idea de qué es o qué hace. En este artículo vamos a centrarnos en el archivo .htaccess y revelar sus misterios de una vez por todas. Al final de este artículo, comprenderá qué es el archivo .htaccess, qué hace el archivo .htaccess y cómo puede utilizar el archivo .htaccess para lograr ciertas tareas. ¡Vámonos!

¿Qué es el archivo .htaccess?

Comencemos observando exactamente qué es un archivo .htaccess. 'htaccess' significa 'acceso de hipertexto'. Este nombre describe para qué se usó el archivo cuando se desarrolló por primera vez. En resumen, se utilizó para controlar el acceso de los usuarios a ciertos archivos y directorios. Las cosas han cambiado desde que .htaccess apareció por primera vez en escena y ahora se usa de varias maneras diferentes en WordPress que veremos en detalle.

El .htaccess es un archivo central de configuración de WordPress que se utiliza para anular configuraciones específicas del servidor web Apache (Apache es un software comúnmente utilizado en servidores web) o para implementar otras funciones que afectan el funcionamiento de su sitio web. Se incluye en todas las instalaciones de WordPress justo después de habilitar los enlaces permanentes y generalmente se encuentra en el directorio raíz de la instalación. Puede verlo o editarlo accediendo a los archivos de instalación a través de un cliente FTP como FileZilla o WinSCP.

Nota: asegúrese de que las preferencias de su cliente FTP estén modificadas para que se muestren los archivos ocultos.

De forma predeterminada, el contenido de un archivo .htaccess de un sitio web de WordPress, una vez que se habilitan los enlaces permanentes, se ve así:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

En caso de que aún no lo sepa, el "#" al comienzo de una línea es un comentario. Las líneas de comentarios # BEGIN WordPress y # END WordPress se utilizan para que el contenido permanezca organizado cuando los complementos o usted mismo apliquen más reglas más adelante. Cualquier adición futura al archivo .htaccess debe colocarse fuera de estas líneas.

El archivo .htaccess se usa principalmente en WordPress para controlar los enlaces permanentes en su sitio web. Sin embargo, también se puede usar como una herramienta poderosa para otras tareas, como controlar el acceso a ciertos archivos, mejorar la seguridad y el rendimiento, enviar encabezados personalizados y mucho más.

Nota: Es importante que cualquier cambio realizado en el archivo .htaccess de su sitio web se realice con cuidado. Incluso un simple error tipográfico en este archivo podría provocar el bloqueo de su sitio web. Como tal, si no está seguro acerca de los cambios que está realizando, idealmente debería probarlos en un servidor de prueba antes de aplicarlos a su sitio web en vivo.

Cosas que puede hacer con su archivo .htaccess

Entonces, veamos cómo puede tomar más control de su sitio web con la ayuda del archivo .htaccess.

Redirección entre 'www' y 'no-www'

Un uso común del archivo .htaccess es establecer una redirección permanente desde su "dominio desnudo" (versión que no es www) a su versión www o viceversa.

Antes de continuar, asegúrese de que ambos dominios estén configurados en su DNS para resolver la dirección IP del servidor correcto.

Además, en su área de administración de WordPress, verifique si el dominio desnudo está configurado como principal.

URL del sitio de configuración

Puede redirigir el dominio www al dominio desnudo agregando el siguiente código en el archivo .htaccess, debajo del contenido predeterminado.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

Para lograr exactamente lo contrario (si www está configurado como principal) y redirigir desde un dominio 'no-www' a 'www', deberá insertar este código:

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

Si no está familiarizado con las expresiones regulares utilizadas en el código y le gustaría comprender más sobre la sintaxis, tómese su tiempo y lea más sobre REGEX. HT Access Cheat Sheet es otra herramienta muy útil

Redirección 301 (redirección permanente)

Una redirección 301 le dice a los motores de búsqueda que una URL ha sido reemplazada permanentemente por otra y también redirige a un usuario a ese visitante a una nueva URL (¡correcta!). .

Aquí está el fragmento de código que cuando se coloca en un archivo .htaccess hace el truco:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

En el ejemplo anterior, hemos redirigido a los usuarios del sitio web 'mycompanyname.com' a 'example.com'. Por supuesto, querrá reemplazar estas secciones con sus propias URL.

Esto también se aplicará a todas las rutas del dominio. Lo que significa que, por ejemplo, mycompanyname.com/new.html redirigirá a example.com/new.html

Redirección 302 (redirección temporal)

Cuando un contenido se mueve temporalmente a otra ubicación, se utiliza una redirección 302. La sintaxis es la misma que en 301. Por ejemplo:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

Desde una perspectiva práctica, el resultado es exactamente el mismo pero con una diferencia importante. Con una redirección 301, se les dice a los motores de búsqueda que la página ya no está activa y, al hacerlo, alentará a los motores de búsqueda a eliminar esta página de los resultados de búsqueda. En el caso de una redirección 302, Google seguirá rastreando la URL original y seguirá indexando en lugar de la nueva URL. Como tal, es la solución ideal para una redirección cuando solo desea redirigir temporalmente a contenido alternativo.

Forzar a HTTPS

Asegurar su sitio web con un certificado SSL es muy importante en estos días. Los sitios web que no hagan esto ahora mostrarán una advertencia en la barra del navegador que puede socavar la confianza en su sitio web. Además, Google realmente penaliza los sitios web que no entregan contenido a través de HTTPS y, como tal, su clasificación de búsqueda podría verse afectada.

Incluso cuando instala un certificado SSL en su sitio web, es posible que los usuarios puedan visitar la versión que no es HTTPS de su sitio. Si hacen esto, seguirán recibiendo la advertencia en su navegador a pesar de que tiene instalado un certificado SSL. Para evitar que esto suceda, debe forzar todo el tráfico de la versión HTTP insegura a la versión HTTPS segura. Esto es muy fácil de hacer usando su archivo .htaccess agregando el siguiente código:

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

Bloquear direcciones IP

Si recibe tráfico de spam o su sitio web está sufriendo abusos o intentos de piratería de ciertas direcciones IP, puede tomar medidas usando su archivo .htaccess bloqueando el tráfico de esa dirección IP usando el siguiente código en su archivo .htaccess.

 Deny from 94.66.58.135

Si desea saber cómo puede bloquear una dirección IP de otras maneras, lea esta guía.

Prevenir la vinculación activa de imágenes

El hotlinking de imágenes es cuando alguien incrusta una imagen en su sitio web en el suyo propio. Esto puede ser problemático (y no solo desde la perspectiva de los derechos de autor), ya que significa que su servidor tiene que trabajar horas extra para publicar imágenes en el sitio web de otra persona. Puede detener esto usando el archivo .htaccess para impedir que alguien incruste sus imágenes en su sitio web con el siguiente código:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

¡No olvide reemplazar 'mycompanyname.com' con la URL de su sitio web!

Este código bloquea TODOS los sitios web para que no puedan vincular imágenes en su sitio. Como no desea que los motores de búsqueda dejen de vincular imágenes, deberá incluirlas manualmente en la lista blanca. La sección del código que logra esto es esta parte aquí:

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

Por supuesto, puede incluir cualquier otro sitio web que desee incluir en la lista blanca. Finalmente, la última línea del código ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) dicta qué tipos de medios están bloqueados.

Proteger archivos de complementos y temas

Los archivos PHP de complementos y temas a veces pueden ser el objetivo de los piratas informáticos que intentan inyectarles código malicioso. Puede usar su archivo .htaccess para ayudar a evitar el acceso a estos archivos usando el siguiente código:

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Proteja los archivos principales de WordPress

Se recomienda encarecidamente que algunos archivos principales de WordPress sean inaccesibles para usuarios que no sean administradores. Esto es algo de lo que se encargan la mayoría de los proveedores de alojamiento, pero no siempre es así. Si desea evitar el acceso a archivos confidenciales de WordPress, puede usar el siguiente código en su archivo .htaccess:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

Evite que los bots maliciosos rastreen su sitio web

Los bots son básicamente scripts web automatizados que pueden escanear millones de sitios web al día. Google usa bots para escanear sitios web y toma los datos de estos escaneos para actualizar sus bases de datos de búsqueda masivas. ¡Ojalá un bot de Google sea completamente inofensivo! Sin embargo, hay otros bots que es posible que no desee escanear su sitio web. Algunos de estos bots "malos" pueden no hacer nada más que consumir ancho de banda innecesario del servidor, mientras que otros pueden estar buscando activamente debilidades explotables en su sitio web. Su archivo .htaccess se puede usar para bloquear estos bots "malos".

Lo primero que debe averiguar es qué bots desea bloquear. Es posible que ya lo sepa, pero si no, puede consultar una lista actualizada de bots en la lista negra que se consideran sospechosos. Cuando tenga su lista, puede agregarla a su archivo .htaccess de esta manera:

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

Después de guardar los cambios, todos los bots de la lista que ahora visiten su sitio web obtendrán una página 403 Prohibida.

Proteger wp-config.php

En general, se recomienda restringir el acceso al archivo wp-config.php, ya que contiene las credenciales de acceso a la base de datos.

Para hacer esto a través de .htaccess, simplemente copie y pegue las siguientes líneas en su archivo .htaccess:

 <files wp-config.php>order allow,denydeny from all</files>

Deshabilitar la ejecución de PHP

Una forma muy eficiente de protegerse de los intentos de piratería es evitar la ejecución de PHP en directorios específicos donde no se necesita. Por ejemplo, los directorios /wp-includes/ y /wp-content/uploads/ son ubicaciones populares utilizadas por los piratas informáticos para colocar código que permite el acceso no autorizado al servidor (conocido como archivos de puerta trasera). Deshabilitar la ejecución de PHP en estos directorios no borrará esos archivos, sino que detendrá la ejecución de su código. Para hacer esto, agregue el siguiente código a su archivo .htaccess.

 <Files *.php>deny from all</Files>

También encontrará que muchos proveedores de alojamiento, incluido Pressidium, ya han deshabilitado de forma predeterminada la ejecución de PHP en estos directorios para mejorar su nivel de seguridad para sus clientes.

Deshabilitar acceso XML-RPC

Es un problema común que a menudo ven los equipos de soporte en las empresas de alojamiento donde una instalación de WordPress recibe miles de solicitudes "POST /xmlrpc.php HTTP/1.1" que a menudo están relacionadas con un ataque de una o varias direcciones IP. Una solución a esto es deshabilitar XML-RPC.

Para deshabilitar XML-RPC para su sitio web, agregue estas líneas de código a su archivo .htaccess:

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

Vale la pena señalar que xmlrpc.php es necesario si está actualizando su contenido usando aplicaciones móviles o conexiones remotas. Entonces, si está considerando deshabilitarlo permanentemente, asegúrese de que no sea necesario para su trabajo.

Forzar la descarga de archivos

Puede ser muy molesto como usuario de un sitio web que, cuando desea descargar un archivo de un sitio web (por ejemplo, un PDF), el archivo se abre en la ventana del navegador. Si tiene archivos en su sitio web que se proporcionan como elementos descargables para sus usuarios, puede editar su archivo .htaccess y agregar una línea de código que puede forzar la descarga de tipos de archivos específicos y no mostrarlos directamente desde el navegador. Verá este código a continuación junto con algunos ejemplos de tipos de archivos que le gustaría que los usuarios pudieran descargar directamente.

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Enviar encabezados HTTP personalizados

Es posible que los usuarios avanzados deseen poder enviar encabezados HTTP de clientes aprovechando la directiva de encabezado de Apache. Para hacer esto, agregue el siguiente código a su archivo .htaccess.

 Header add my-custom-header "my custom header value"

El ejemplo anterior le diría a Apache que agregue un encabezado llamado "mi encabezado personalizado" para cada solicitud al servidor. Si implementamos esta actualización y luego verificamos nuestra pestaña de red en las herramientas de nuestro navegador, podemos confirmar su respuesta como se muestra a continuación.

mi encabezado personalizado

Esta técnica es muy común para agregar encabezados de caché y seguridad o agregar un conjunto de caracteres de idioma. Eche un vistazo a este artículo para conocer algunos usos populares. También puede encontrar una lista detallada de encabezados para que experimente en esta lista.

Conclusión

Esperamos que este artículo le haya dado algunas ideas sobre las cosas que se pueden lograr con el archivo .htaccess. Claro, muchas de estas cosas se pueden lograr mediante el uso de un complemento, pero siempre es útil comprender qué sucede exactamente 'bajo el capó', especialmente si un complemento no funciona de la manera esperada. Dominar cómo editar el archivo .htaccess en lugar de depender de un complemento también ayuda a mejorar sus niveles de experiencia en WordPress... ¡y eso siempre es bueno!