Archivo .htaccess de WordPress: Cómo usar el archivo .htaccess
Archivo .htaccess de WordPress: el archivo .htaccess es un archivo central importante de WordPress que se utiliza a menudo para agregar, modificar y anular configuraciones a nivel de servidor, seguridad y parámetros de rendimiento.
¿Qué es un archivo .htaccess?
Un archivo .htaccess es el corazón de su sitio web, que contiene reglas básicas que rigen toda la comunicación con su WordPress y alojamiento web. En concreto, puedes utilizar el archivo .htaccess en WordPress para tareas como controlar el acceso a las páginas web, mejorar la seguridad y el rendimiento.
¡Pero cuidado!
Un solo punto (.) mal colocado puede bloquear tu sitio. Por lo tanto, antes de realizar cualquier cambio en el archivo .htaccess, guarde primero el archivo en una ubicación externa. Si algo sale mal o necesitas ayuda, comunícate con tu proveedor de alojamiento web o con un webmaster experto.
El archivo .htaccess predeterminado en WordPress
El archivo .htaccess viene con cada instalación de WordPress y generalmente se encuentra en el directorio raíz. Dada la importancia del archivo, a menudo está oculto (no tiene extensión de archivo) y no aparece en las listas de archivos y carpetas, principalmente porque el administrador de archivos lo oculta por razones de seguridad.
En raras ocasiones, es posible que no haya ningún archivo .htaccess en la carpeta raíz. Si este es tu caso, puedes crear un archivo .htaccess en WordPress usando el Bloc de notas (o cualquier editor de texto de tu elección) y guardarlo con el nombre “.htaccess”. Establezca el “Tipo de archivo” en “Todos los archivos” y cárguelos en el directorio raíz de su instalación de WordPress.
IMPORTANTE: Asegúrese de que el nombre del archivo NO sea “htaccess” sin (.), sino .htaccess con un punto (.) al principio.
Así es como se ve el archivo .htaccess predeterminado para WordPress:
# 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
Si el archivo .htaccess aún no existe en tu directorio raíz, puedes crearlo en el panel de control de WordPress en: -> Configuración -> Enlaces permanentes y luego hacer clic en “Guardar cambios” como se muestra en la imagen a continuación. Esto generará el archivo .htaccess predeterminado para WordPress en el directorio raíz.
El archivo .htaccess predeterminado de WordPress solo maneja enlaces permanentes desde su sitio web. Sin embargo, esto se puede cambiar y se pueden agregar reglas adicionales. Esto le permite controlar cómo el servidor web Apache maneja las solicitudes relacionadas con la operación.
¿Cómo edito un archivo .htaccess en WordPress?
Para editar el archivo .htaccess en WordPress, ve a tu directorio raíz. Puedes hacerlo a través del administrador de archivos proporcionado por tu proveedor o proveedor de alojamiento de WordPress, o a través de un cliente FTP como FileZilla.
Inicie sesión en su cuenta de alojamiento web y navegue hasta la carpeta “public_html” y busque el archivo .htaccess en la instalación de WordPress.
Haga clic con el botón derecho en el archivo, luego haga clic en la opción “Ver/Editar” para abrirlo en su editor de texto favorito. Edite los cambios necesarios y guarde el archivo.
Otra forma de editar el archivo .htaccess de WordPress es hacer una copia en el sistema local. Cuando haya terminado, reemplace la versión en vivo a través de FTP o el administrador de archivos.
Redirecciones .htaccess de WordPress
Como se muestra arriba, el archivo .htaccess en WordPress se puede usar para controlar las redirecciones del sitio web. Estas son algunas reglas de uso común para ayudarte a configurar y controlar los redireccionamientos en tus sitios web de WordPress.
Redireccionamiento 301 (permanente)
Una redirección 301 indica a los motores de búsqueda que una URL se ha movido permanentemente a otra ubicación. Esto no se limita solo a las URL, y puede redirigir una carpeta, una página o incluso un sitio web completo. El siguiente fragmento de código redirige el alteseite.html a neueseite.html:
Redirect 301 /alteseite.html http://www.ihrewebsite.com/neueseite.html
Redireccionamiento 302 (temporal)
A diferencia del 301, el redireccionamiento 302 indica a los motores de búsqueda que este redireccionamiento es temporal. Esta es una excelente manera de ralentizar (o incluso prevenir) los cambios en las SERP. Agregue la siguiente línea al archivo .htaccess:
Redirect 302 /alteseite.html http : //www.ihrewebsite.com/neueseite.html
Forzar URL en www
La siguiente regla .htaccess en WordPress redirige a todos los visitantes de example.com a: www.example.com.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
Forzar URL a no www
La siguiente regla .htaccess redirige a todos los visitantes de www.example.com a example.com.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Aplicación de HTTP
La siguiente regla en el archivo .htaccess de WordPress obliga a todos sus visitantes a usar HTTPS en lugar de HTTP para todas las URL.
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Aplicar HTTP
La siguiente regla en el archivo htaccess para WordPress obliga a tus visitantes a usar HTTP en lugar de HTTPS para todas las URL.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}</IfModule>
Redirigir el dominio al subdirectorio
La siguiente regla redirige la URL raíz del dominio al subdirectorio de su elección.
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/sub-directory-name/
RewriteRule (.*) /subdir/$1
URL de redireccionamiento
Si tiene dos dominios que sirven en el mismo sitio web, la regla .htaccess que se menciona a continuación redirigirá un dominio al otro.
Redirect 301 / http://www.mynewwebsite.com/
Consejos de seguridad de WordPress .htaccess
El archivo .htaccess también se puede utilizar para hacer una copia de seguridad de los directorios y archivos de WordPress en el servidor. Aquí hay algunas reglas muy importantes que los usuarios pueden aplicar a los sitios web seguros de WordPress.
¿Cómo puedo proteger el dominio .htaccess?
El archivo .htaccess puede controlar potencialmente todo el sitio web. Con esto en mente, es primordial que el .htaccess esté protegido de usuarios no autorizados. Puede utilizar el siguiente fragmento de código para restringir el acceso de todos los usuarios no autorizados.
Simplemente copie el fragmento y péguelo en el archivo .htaccess.
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
¿Cómo puedo restringir el acceso al panel de administración de WordPress?
Imagina el (terrible) escenario de que alguien obtenga acceso a tu panel de administración de WordPress. Un ataque de este tipo puede causar un daño extremo o destruir por completo su sitio web.
Para evitar que esto suceda, puede restringir el acceso al panel de administración de WordPress solo a una IP específica.
Para ello, crea otro archivo .htaccess y pega el siguiente fragmento en él. A continuación, súbelo a la carpeta “www.yourwebsite.com/wp-admin/” a través de FTP.
# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</Limit>
Indirecta: No olvide reemplazar “xx.xx.xx.xx” en el código anterior con su dirección IP permitida.
Ahora, si alguien no está en la lista de IP aprobadas, no podrá iniciar sesión en su sitio. En su lugar, se mostraría el siguiente error:
“Error interno del servidor“
¿Cómo puedo hacer una copia de seguridad de archivos importantes?
Puedes utilizar el archivo .htaccess en WordPress para proteger archivos importantes como registros de errores, wp-config.php y php.ini. Utilice el siguiente fragmento:
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>
¿Cómo puedo proteger el archivo wp-config.php?
En su instalación de WordPress, el archivo se wp-config.php el archivo que almacena el alojamiento, la base de datos y otras credenciales importantes. Por lo tanto, es existencial que este archivo esté protegido de cualquier acceso no autorizado.
Para hacer esto, simplemente copie las siguientes líneas y péguelas en su archivo .htaccess.
<files wp-config.php>
order allow,deny
deny from all
</files>
¿Cómo puedo proteger la carpeta /wp-content/?
La carpeta “wp-content” contiene todos los archivos importantes de tu tema, los plugins, los medios y los archivos almacenados en caché. Es por eso que este directorio es el objetivo principal de los ataques de piratas informáticos y a los spammers les gusta especialmente usarlo. Para proteger esta carpeta del acceso no autorizado, crea un archivo .htaccess separado en la carpeta wp-content. A continuación, copie y pegue el siguiente fragmento en el archivo:
Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>
La regla anterior solo permitiría a los usuarios cargar archivos con las extensiones permitidas (XML, CSS, JPG, JPEG, PNG, GIF y JavaScript). Todos los demás tipos de archivos serán rechazados.
¿Cómo puedo proteger los archivos wp-includes?
Algunas áreas de su instalación de WordPress nunca deberían ser accesibles para el usuario promedio. Siempre se recomienda bloquear todo acceso a estos archivos. Puede configurar las restricciones de acceso agregando el siguiente fragmento a 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>
¿Cómo puedo desactivar la ejecución de PHP?
Restringir la ejecución de código PHP para todos o algunos directorios del sitio web de WordPress es una práctica de seguridad importante. Cree un archivo htaccess en una carpeta en la que no desee ejecutar scripts PHP y agregue el siguiente fragmento.
<Files *.php>
deny from all
</Files>
Ciertas carpetas de WordPress como /wp-includes/ y /wp-content/uploads/ se pueden escribir de forma predeterminada. Este tipo de permiso permite a los usuarios cargar medios o diferentes tipos de archivos. Siempre se recomienda desactivar la ejecución de PHP en estos directorios.
¿Cómo puedo restringir el acceso a los archivos?
Restringir el acceso a wp-admin es un requisito importante, especialmente cuando varios miembros del equipo están involucrados en la administración y actualización del sitio.
En la práctica, esto significa que los usuarios no pueden acceder a archivos confidenciales como plugins, temas y carpetas de recursos.
.htaccess es una excelente manera de proteger el acceso directo para editar archivos PHP de complementos y temas, lo que dificulta que los piratas informáticos inyecten código malicioso. Para ello, basta con añadir las siguientes líneas al archivo:
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]
¿Cómo puedo proporcionar protección contra inyecciones para scripts?
La inyección de scripts es una técnica notoria en la que el atacante “inyecta” código malicioso en el código del sitio web para extraer datos o apoderarse del sitio web. Agregar el siguiente fragmento al archivo de WordPress “.htaccess” puede proteger su sitio web de tales ataques.
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]
¿Cómo puedo bloquear mi dirección IP?
Si alguien abusa de su sitio, envía spam continuamente o comienza intentos de piratería, su IP será visible en el área de administración de WordPress. Para bloquear la IP, simplemente use el archivo .htaccess para controlar el acceso a su sitio web. Simplemente copie el siguiente fragmento y péguelo en el archivo .htaccess. Esto solucionará este problema en particular de inmediato. Recuerde reemplazar la IP de muestra con la del spammer.
<Limit GET POST>
order allow,deny
deny from 123.456.78.9
allow from all
</Limit>
¿Cómo puedo denegar el acceso a ciertos archivos?
¿Quieres restringir el acceso a archivos específicos? No hay problema. Utilice la siguiente regla .htaccess para bloquear el acceso a archivos individuales.
<files your-file-name.txt>
order allow,deny
deny from all
</files>
¿Cómo puedo desactivar la búsqueda en directorios?
El acceso no autorizado a los archivos y carpetas del sitio web es un riesgo de seguridad importante que puede paralizar todo el sitio web.
Agregar el siguiente fragmento a su archivo .htaccess puede controlar y/o deshabilitar el acceso a los directorios del sitio web para todos los usuarios.
# disable directory browsing
Options All -Indexes
Reglas de htaccess para mejorar el rendimiento
El archivo .htaccess en WordPress también se puede utilizar para mejorar el rendimiento de su sitio web. Simplemente copie y pegue los fragmentos relevantes en el archivo .htaccess
¿Cómo puedo activar la caché del navegador?
La caché del navegador es un espacio de almacenamiento temporal en su sistema para que los archivos descargados de su navegador web rendericen los sitios web correctamente. Estos archivos pueden contener HTML, CSS, JavaScript, así como imágenes y otros contenidos multimedia.
En el archivo .htaccess de WordPress, puede establecer reglas sobre cuánto tiempo deben almacenarse en caché ciertos archivos. Los siguientes límites de caducidad se establecen en función del uso común. Para habilitar el almacenamiento en caché del navegador, pegue el siguiente fragmento en el archivo htaccess.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
¿Cómo puedo habilitar la compresión Gzip?
Gzip es un algoritmo de compresión extremadamente poderoso que encuentra cadenas similares en un archivo de texto y las reemplaza temporalmente. Esto reducirá significativamente el tamaño total del archivo. Por esta razón, Gzip se utiliza a menudo como una herramienta importante para optimizar la velocidad de carga de la página del sitio web .
La compresión Gzip se usa a menudo a nivel de servidor y muchos proveedores de alojamiento la habilitan de forma predeterminada. En algunos complementos de caché, como “WP Rocket“, el código correspondiente se inserta automáticamente. A continuación, puede comprobarlo en su archivo .htaccess. Sin embargo, si por alguna razón eso no funciona, puede agregar el siguiente fragmento al archivo .htaccess.
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
¿Cómo puedo controlar/restringir los enlaces directos de imágenes?
Los enlaces directos de imágenes pueden afectar significativamente al uso del ancho de banda, ya que cada vez que un recurso externo solicita una imagen, el ancho de banda del servidor se utiliza para servir la imagen.
Para reducir el consumo de ancho de banda debido a los enlaces directos de imágenes, puede agregar el siguiente fragmento de código al archivo .htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
htaccess para WordPress Multisite (WPMU)
El archivo .htaccess predeterminado para WordPress Multisite es ligeramente diferente del archivo .htaccess predeterminado de WordPress.
Htaccess predeterminado para subcarpetas WPMU
Si tu red multisitio de WordPress se basa en subcarpetas, el archivo .htaccess predeterminado debería tener un aspecto similar al siguiente:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
htaccess estándar para subdominios WPMU
Si tu red multisitio de WordPress se basa en subdominios, el archivo .htaccess predeterminado debería tener un aspecto similar al siguiente:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Resultado
Cuando se trata de la configuración del servidor, el archivo .htaccess de WordPress es uno de los archivos más importantes de su servidor. A menudo se utiliza para configurar su servidor web y para proteger y optimizar diferentes áreas de su sitio web.