{"id":436,"date":"2026-05-22T08:27:00","date_gmt":"2026-05-22T06:27:00","guid":{"rendered":"https:\/\/blumhost.net\/blog\/?p=436"},"modified":"2026-05-16T12:33:51","modified_gmt":"2026-05-16T10:33:51","slug":"htaccess-guia-completa","status":"publish","type":"post","link":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/","title":{"rendered":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si tienes un hosting compartido con cPanel, hay un archivo que controla en silencio buena parte de lo que ocurre en tu servidor: el <code>.htaccess<\/code>. Cada redirecci\u00f3n que funciona, cada p\u00e1gina de error personalizada, cada bloqueo de IP o cada vez que tu web fuerza HTTPS\u2026 probablemente pasa por \u00e9l.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema es que la mayor\u00eda de gu\u00edas sobre <code>.htaccess<\/code> se quedan en la superficie: explican qu\u00e9 es y c\u00f3mo abrirlo, pero no dan los ejemplos pr\u00e1cticos que necesitas para sacarle partido de verdad. Esta gu\u00eda va m\u00e1s all\u00e1. Aqu\u00ed encontrar\u00e1s desde lo m\u00e1s b\u00e1sico hasta los casos de uso m\u00e1s \u00fatiles, con c\u00f3digo listo para copiar y pegar, explicado l\u00ednea a l\u00ednea.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Que_es_el_archivo_htaccess\" >Qu\u00e9 es el archivo .htaccess<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Como_funciona_el_htaccess_lo_que_necesitas_entender_antes_de_editarlo\" >C\u00f3mo funciona el .htaccess: lo que necesitas entender antes de editarlo<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Funciona_por_directorio_y_de_forma_recursiva\" >Funciona por directorio y de forma recursiva<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Los_cambios_son_inmediatos_y_no_requieren_reinicio\" >Los cambios son inmediatos y no requieren reinicio<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Como_encontrar_y_abrir_el_htaccess_en_cPanel\" >C\u00f3mo encontrar y abrir el .htaccess en cPanel<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Paso_1_Entra_en_el_Administrador_de_Archivos_de_cPanel\" >Paso 1: Entra en el Administrador de Archivos de cPanel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Paso_2_Activa_la_visualizacion_de_archivos_ocultos\" >Paso 2: Activa la visualizaci\u00f3n de archivos ocultos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Paso_3_Edita_el_archivo_con_seguridad\" >Paso 3: Edita el archivo con seguridad<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Alternativa_editar_por_FTP\" >Alternativa: editar por FTP<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Como_crear_el_htaccess_si_no_existe\" >C\u00f3mo crear el .htaccess si no existe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Precauciones_esenciales_antes_de_editar_el_htaccess\" >Precauciones esenciales antes de editar el .htaccess<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Ejemplos_practicos_de_htaccess_con_codigo\" >Ejemplos pr\u00e1cticos de .htaccess con c\u00f3digo<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#1_Forzar_HTTPS_redirigir_HTTP_a_HTTPS\" >1. Forzar HTTPS (redirigir HTTP a HTTPS)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#2_Redireccionamientos_301_permanentes\" >2. Redireccionamientos 301 (permanentes)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#3_Redireccionamientos_302_temporales\" >3. Redireccionamientos 302 (temporales)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#4_Paginas_de_error_personalizadas\" >4. P\u00e1ginas de error personalizadas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#5_Proteger_directorios_con_contrasena_HTTP_Auth\" >5. Proteger directorios con contrase\u00f1a (HTTP Auth)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#6_Bloquear_IPs_o_rangos_de_IPs\" >6. Bloquear IPs o rangos de IPs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#7_Bloquear_el_hotlinking_robo_de_imagenes\" >7. Bloquear el hotlinking (robo de im\u00e1genes)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#8_Proteger_archivos_sensibles\" >8. Proteger archivos sensibles<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#9_Compresion_Gzip_para_mejorar_la_velocidad\" >9. Compresi\u00f3n Gzip para mejorar la velocidad<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#10_Cache_de_navegador_Expires_headers\" >10. Cach\u00e9 de navegador (Expires headers)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#11_Cabeceras_de_seguridad_HTTP\" >11. Cabeceras de seguridad HTTP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#12_Limitar_el_tamano_maximo_de_subida_de_archivos\" >12. Limitar el tama\u00f1o m\u00e1ximo de subida de archivos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#13_Denegar_el_acceso_a_directorios_deshabilitar_Directory_Listing\" >13. Denegar el acceso a directorios (deshabilitar Directory Listing)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#14_Cambiar_la_pagina_de_inicio_por_defecto\" >14. Cambiar la p\u00e1gina de inicio por defecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#15_Bloquear_acceso_por_User-Agent_bots_maliciosos\" >15. Bloquear acceso por User-Agent (bots maliciosos)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#El_htaccess_en_WordPress_lo_que_necesitas_saber\" >El .htaccess en WordPress: lo que necesitas saber<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#El_bloque_que_no_debes_tocar\" >El bloque que no debes tocar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Donde_anadir_tus_propias_reglas\" >D\u00f3nde a\u00f1adir tus propias reglas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Plugins_que_modifican_el_htaccess\" >Plugins que modifican el .htaccess<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Regenerar_el_htaccess_de_WordPress\" >Regenerar el .htaccess de WordPress<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Diferencias_entre_htaccess_en_hosting_compartido_y_en_VPS\" >Diferencias entre .htaccess en hosting compartido y en VPS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Diagnostico_que_hacer_si_el_htaccess_rompe_tu_web\" >Diagn\u00f3stico: qu\u00e9 hacer si el .htaccess rompe tu web<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Referencia_rapida_los_bloques_de_codigo_mas_usados\" >Referencia r\u00e1pida: los bloques de c\u00f3digo m\u00e1s usados<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#Conclusion\" >Conclusi\u00f3n<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Que_es_el_archivo_htaccess\"><\/span>Qu\u00e9 es el archivo .htaccess<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>.htaccess<\/code> son las siglas de <em>HyperText Access<\/em>. Es un <strong>archivo de configuraci\u00f3n de texto plano<\/strong> que usa el servidor web Apache \u2014y los compatibles con \u00e9l, como LiteSpeed\u2014 para aplicar directivas a nivel de directorio de forma inmediata, sin necesidad de tocar la configuraci\u00f3n global del servidor ni reiniciarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00e1ctica, significa que t\u00fa, como propietario de tu hosting, puedes modificar el comportamiento del servidor para tu web concreta sin necesitar acceso root ni pedir nada al proveedor. Solo editas el archivo y los cambios se aplican al instante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El punto que lleva delante (<code>.htaccess<\/code>) no es un detalle est\u00e9tico: en los sistemas Linux, cualquier archivo cuyo nombre empieza por un punto es un <strong>archivo oculto<\/strong>. Por eso no lo ves a simple vista en el gestor de archivos hasta que activas la opci\u00f3n correspondiente.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Importante:<\/strong> El <code>.htaccess<\/code> funciona con Apache y LiteSpeed. Si tu servidor usa Nginx (m\u00e1s habitual en VPS gestionados manualmente), la sintaxis es diferente y el <code>.htaccess<\/code> no se procesa. En los planes de hosting compartido de BlumHost, que usan LiteSpeed, todos los ejemplos de esta gu\u00eda funcionan perfectamente. Si tienes un VPS y quieres saber m\u00e1s sobre las diferencias entre servidores web, consulta nuestra <a href=\"https:\/\/blumhost.net\/blog\/hosting-litespeed-vs-apache-vs-nginx\/\" target=\"_blank\" rel=\"noreferrer noopener\">comparativa LiteSpeed vs Apache vs Nginx<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_funciona_el_htaccess_lo_que_necesitas_entender_antes_de_editarlo\"><\/span>C\u00f3mo funciona el .htaccess: lo que necesitas entender antes de editarlo<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de ver ejemplos, hay dos conceptos clave que marcan la diferencia entre usar el <code>.htaccess<\/code> bien y romper tu web por accidente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Funciona_por_directorio_y_de_forma_recursiva\"><\/span>Funciona por directorio y de forma recursiva<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes tener m\u00e1s de un archivo <code>.htaccess<\/code> en distintas carpetas de tu web. Las directivas que incluyas en uno de ellos se aplican a esa carpeta y a <strong>todas las subcarpetas<\/strong> que cuelguen de ella, salvo que una subcarpeta tenga su propio <code>.htaccess<\/code> que las sobreescriba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>.htaccess<\/code> que m\u00e1s afecta a tu web es el que est\u00e1 en la ra\u00edz (<code>public_html<\/code>), ya que aplica a todo el sitio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Los_cambios_son_inmediatos_y_no_requieren_reinicio\"><\/span>Los cambios son inmediatos y no requieren reinicio<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A diferencia de editar la configuraci\u00f3n de Apache a nivel global, cualquier cambio en el <code>.htaccess<\/code> surte efecto en la siguiente petici\u00f3n HTTP. No hay que reiniciar el servidor, no hay que vaciar ning\u00fan cach\u00e9 del servidor (aunque s\u00ed puede ser necesario vaciar el cach\u00e9 del navegador para ver el efecto en el front-end).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es muy c\u00f3modo, pero tambi\u00e9n significa que <strong>un error de sintaxis tiene efecto inmediato<\/strong>: si escribes mal una directiva, tu web puede devolver un error 500 al instante.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_encontrar_y_abrir_el_htaccess_en_cPanel\"><\/span>C\u00f3mo encontrar y abrir el .htaccess en cPanel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>.htaccess<\/code> est\u00e1 en la ra\u00edz de tu dominio, dentro de <code>public_html<\/code>. Como es un archivo oculto, necesitas un paso extra para verlo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_1_Entra_en_el_Administrador_de_Archivos_de_cPanel\"><\/span>Paso 1: Entra en el Administrador de Archivos de cPanel<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Accede a cPanel (normalmente en <code>tudominio.com\/cpanel<\/code> o desde el \u00e1rea de cliente de BlumHost) y busca <strong>Administrador de Archivos<\/strong> en la secci\u00f3n de Archivos. Abre la carpeta <code>public_html<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_2_Activa_la_visualizacion_de_archivos_ocultos\"><\/span>Paso 2: Activa la visualizaci\u00f3n de archivos ocultos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En la esquina superior derecha del Administrador de Archivos, haz clic en el bot\u00f3n <strong>Configuraci\u00f3n<\/strong> (o el icono de engranaje). Marca la casilla <strong>\u00abMostrar archivos ocultos (dotfiles)\u00bb<\/strong> y guarda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora ver\u00e1s el <code>.htaccess<\/code> en el listado de archivos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_3_Edita_el_archivo_con_seguridad\"><\/span>Paso 3: Edita el archivo con seguridad<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Antes de cualquier cambio:<\/strong> descarga una copia del <code>.htaccess<\/code> actual a tu ordenador. Si algo falla, tendr\u00e1s la versi\u00f3n original para restaurar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Haz clic derecho sobre el archivo y selecciona <strong>Editar<\/strong>. Se abrir\u00e1 el editor de c\u00f3digo integrado en cPanel donde puedes modificar el contenido directamente desde el navegador.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Alternativa_editar_por_FTP\"><\/span>Alternativa: editar por FTP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes descargarlo con un cliente FTP como FileZilla, editarlo con cualquier editor de texto plano (Notepad++, VS Code, Sublime Text\u2026) y volver a subirlo. Nunca uses Word o LibreOffice Writer: a\u00f1aden formato invisible que corrompe el archivo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_crear_el_htaccess_si_no_existe\"><\/span>C\u00f3mo crear el .htaccess si no existe<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si no encuentras el archivo ni activando los ocultos, es que no existe. Para crearlo:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>En el Administrador de Archivos, dentro de <code>public_html<\/code>, haz clic en <strong>+ Archivo<\/strong><\/li>\n\n\n\n<li>Escribe exactamente <code>.htaccess<\/code> como nombre (con el punto delante, sin extensi\u00f3n)<\/li>\n\n\n\n<li>Confirma la creaci\u00f3n y luego ed\u00edtalo<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para un WordPress reci\u00e9n instalado, el contenido m\u00ednimo que necesitas es:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># BEGIN WordPress\n&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteBase \/\nRewriteRule ^index\\.php$ - &#91;L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule . \/index.php &#91;L]\n&lt;\/IfModule&gt;\n# END WordPress<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este bloque es el que permite que WordPress gestione sus URLs amigables (permalinks). Sin \u00e9l, casi todas las p\u00e1ginas devuelven un error 404.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Si tienes WordPress y has perdido o corrompido el <code>.htaccess<\/code>, tambi\u00e9n puedes regenerarlo desde el panel: ve a <strong>Ajustes \u2192 Enlaces permanentes<\/strong> y haz clic en <strong>Guardar cambios<\/strong>, sin modificar nada. WordPress lo recrea autom\u00e1ticamente.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Precauciones_esenciales_antes_de_editar_el_htaccess\"><\/span>Precauciones esenciales antes de editar el .htaccess<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>.htaccess<\/code> es potente, pero tambi\u00e9n fr\u00e1gil. Un error de sintaxis puede tirar tu web en segundos. Sigue estas reglas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Haz siempre una copia antes de editar.<\/strong> Sin excepci\u00f3n. Desc\u00e1rgala a tu ordenador.<\/li>\n\n\n\n<li><strong>Edita una directiva cada vez.<\/strong> A\u00f1ade un cambio, prueba, y solo si funciona a\u00f1ade el siguiente.<\/li>\n\n\n\n<li><strong>Si la web devuelve un error 500 tras editar:<\/strong> accede al <code>.htaccess<\/code> por FTP o el Administrador de Archivos y deshaz el \u00faltimo cambio. El error desaparecer\u00e1 de inmediato.<\/li>\n\n\n\n<li><strong>Comenta tus adiciones.<\/strong> Usa el s\u00edmbolo <code>#<\/code> para dejar notas sobre qu\u00e9 hace cada bloque de c\u00f3digo. Te lo agradecer\u00e1s en el futuro.<\/li>\n\n\n\n<li><strong>No sobrecargues el archivo.<\/strong> Cada regla que a\u00f1ades consume recursos del servidor. Usa solo lo que necesites realmente.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ejemplos_practicos_de_htaccess_con_codigo\"><\/span>Ejemplos pr\u00e1cticos de .htaccess con c\u00f3digo<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Forzar_HTTPS_redirigir_HTTP_a_HTTPS\"><\/span>1. Forzar HTTPS (redirigir HTTP a HTTPS)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes un certificado SSL activo pero tu web a\u00fan es accesible por HTTP, esta redirecci\u00f3n lo soluciona:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} &#91;L,R=301]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qu\u00e9 hace l\u00ednea a l\u00ednea:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>RewriteEngine On<\/code> \u2014 activa el motor de reescritura de URLs<\/li>\n\n\n\n<li><code>RewriteCond %{HTTPS} off<\/code> \u2014 condici\u00f3n: solo si la petici\u00f3n llega por HTTP (no HTTPS)<\/li>\n\n\n\n<li><code>RewriteRule ...<\/code> \u2014 redirige la URL completa a su equivalente en HTTPS con un c\u00f3digo 301 (permanente)<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Para tener SSL en tu hosting primero necesitas un certificado activo. En BlumHost el SSL est\u00e1 incluido y se activa autom\u00e1ticamente en todos los planes de hosting. Si tienes dudas sobre c\u00f3mo funciona, consulta nuestra gu\u00eda sobre <a href=\"https:\/\/blumhost.net\/blog\/certificado-ssl-gratuito-cpanel\/\" target=\"_blank\" rel=\"noreferrer noopener\">certificados SSL gratuitos y c\u00f3mo instalarlos en cPanel<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Redireccionamientos_301_permanentes\"><\/span>2. Redireccionamientos 301 (permanentes)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los redirects 301 son esenciales para el SEO: le dicen a Google que una URL ha cambiado de forma permanente, transfiriendo el posicionamiento de la URL antigua a la nueva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Redirigir una URL concreta a otra:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Redirect 301 \/pagina-antigua\/ https:\/\/tudominio.com\/pagina-nueva\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Redirigir un dominio antiguo a uno nuevo (manteniendo la ruta):<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTP_HOST} ^(www\\.)?dominio-antiguo\\.com$ &#91;NC]\nRewriteRule ^(.*)$ https:\/\/dominio-nuevo.com\/$1 &#91;L,R=301]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Forzar siempre la versi\u00f3n con www:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTP_HOST} !^www\\. &#91;NC]\nRewriteRule ^(.*)$ https:\/\/www.%{HTTP_HOST}%{REQUEST_URI} &#91;L,R=301]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Forzar siempre la versi\u00f3n sin www:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ &#91;NC]\nRewriteRule ^(.*)$ https:\/\/%1%{REQUEST_URI} &#91;L,R=301]<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Elige una sola versi\u00f3n (con o sin www) y s\u00e9 consistente. Google trata <code>www.tudominio.com<\/code> y <code>tudominio.com<\/code> como URLs distintas si no hay una redirecci\u00f3n que las unifique, lo que puede dividir la autoridad SEO de tu dominio.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Redireccionamientos_302_temporales\"><\/span>3. Redireccionamientos 302 (temporales)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un 302 le dice al navegador y a Google que la redirecci\u00f3n es temporal y que la URL original sigue siendo la \u00aboficial\u00bb. \u00dasalo cuando muevas contenido temporalmente (mantenimiento, pruebas A\/B, campa\u00f1as puntuales).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Redirect 302 \/oferta-especial\/ https:\/\/tudominio.com\/landing-temporal\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No abuses de los 302 cuando en realidad el cambio es permanente: Google puede tardar m\u00e1s en rastrear la nueva URL y el traspaso de autoridad SEO no se produce igual que con un 301.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Paginas_de_error_personalizadas\"><\/span>4. P\u00e1ginas de error personalizadas<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las p\u00e1ginas de error por defecto de Apache son funcionales pero muy poco amigables. Puedes sustituirlas por p\u00e1ginas propias que mantengan el dise\u00f1o de tu web:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ErrorDocument 400 \/errores\/400.html\nErrorDocument 401 \/errores\/401.html\nErrorDocument 403 \/errores\/403.html\nErrorDocument 404 \/errores\/404.html\nErrorDocument 500 \/errores\/500.html<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Las p\u00e1ginas de error personalizadas reducen la tasa de abandono cuando un visitante llega a una URL inexistente. Una buena p\u00e1gina 404 incluye un buscador interno o links a las secciones principales del sitio.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Proteger_directorios_con_contrasena_HTTP_Auth\"><\/span>5. Proteger directorios con contrase\u00f1a (HTTP Auth)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes a\u00f1adir una capa de autenticaci\u00f3n b\u00e1sica a cualquier directorio. Muy \u00fatil para proteger el \u00e1rea de administraci\u00f3n de WordPress frente a ataques de fuerza bruta automatizados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1:<\/strong> Crea el archivo <code>.htpasswd<\/code> con el usuario y su contrase\u00f1a cifrada. Puedes generarlo con herramientas online como <a href=\"https:\/\/www.htpasswd-generator.com\/\" target=\"_blank\" rel=\"noreferrer noopener sponsored nofollow\">htpasswd-generator.com<\/a> o con el comando en Linux:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>htpasswd -c \/home\/tuusuario\/.htpasswd nombre_usuario<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2:<\/strong> A\u00f1ade esto al <code>.htaccess<\/code> del directorio que quieres proteger:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AuthType Basic\nAuthName \"Acceso restringido\"\nAuthUserFile \/home\/tuusuario\/.htpasswd\nRequire valid-user<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para proteger espec\u00edficamente el login de WordPress sin proteger el resto del sitio:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Files wp-login.php&gt;\n    AuthType Basic\n    AuthName \"Acceso restringido\"\n    AuthUserFile \/home\/tuusuario\/.htpasswd\n    Require valid-user\n&lt;\/Files&gt;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Sustituye <code>\/home\/tuusuario\/<\/code> por la ruta real de tu cuenta. En cPanel puedes verla en la secci\u00f3n de informaci\u00f3n del servidor o consultando con soporte.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"6_Bloquear_IPs_o_rangos_de_IPs\"><\/span>6. Bloquear IPs o rangos de IPs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si detectas ataques, spam o accesos no deseados desde IPs concretas, puedes bloquearlas directamente:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear una IP espec\u00edfica:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;RequireAll&gt;\n    Require all granted\n    Require not ip 123.456.789.012\n&lt;\/RequireAll&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear varias IPs a la vez:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;RequireAll&gt;\n    Require all granted\n    Require not ip 123.456.789.012\n    Require not ip 98.76.54.32\n    Require not ip 111.222.333.444\n&lt;\/RequireAll&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear un rango completo de IPs (una subred):<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;RequireAll&gt;\n    Require all granted\n    Require not ip 123.456.789\n&lt;\/RequireAll&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo anterior bloquea todas las IPs que empiecen por <code>123.456.789.*<\/code>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Si recibes muchos ataques y necesitas una protecci\u00f3n m\u00e1s robusta, los planes de BlumHost incluyen <strong>protecci\u00f3n Anti-DDoS<\/strong> a nivel de red. Consulta m\u00e1s sobre ello en nuestra p\u00e1gina de <a href=\"https:\/\/blumhost.net\/antiddos\" target=\"_blank\" rel=\"noreferrer noopener\">Anti-DDoS<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"7_Bloquear_el_hotlinking_robo_de_imagenes\"><\/span>7. Bloquear el hotlinking (robo de im\u00e1genes)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El hotlinking ocurre cuando otro sitio web usa directamente las URLs de tus im\u00e1genes en su propio HTML. Tu servidor sirve las im\u00e1genes y consume tu ancho de banda, pero el otro sitio se lleva el tr\u00e1fico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTP_REFERER} !^$\nRewriteCond %{HTTP_REFERER} !^https?:\/\/(www\\.)?tudominio\\.com &#91;NC]\nRewriteCond %{HTTP_REFERER} !^https?:\/\/(www\\.)?google\\. &#91;NC]\nRewriteRule \\.(jpg|jpeg|png|gif|webp|svg)$ - &#91;F,NC]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qu\u00e9 hace:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite peticiones directas (sin referrer) y desde tu propio dominio<\/li>\n\n\n\n<li>Permite que Google acceda (para indexaci\u00f3n de im\u00e1genes)<\/li>\n\n\n\n<li>Bloquea (<code>[F]<\/code> = Forbidden) cualquier intento de cargar tus im\u00e1genes desde otro dominio<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes cambiar <code>- [F,NC]<\/code> por la URL de una imagen de sustituci\u00f3n si quieres mostrar algo en lugar de bloquear:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteRule \\.(jpg|jpeg|png|gif|webp)$ https:\/\/tudominio.com\/imagen-protegida.jpg &#91;R,NC,L]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8_Proteger_archivos_sensibles\"><\/span>8. Proteger archivos sensibles<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos archivos de tu servidor nunca deber\u00edan ser accesibles desde un navegador. El m\u00e1s cr\u00edtico en WordPress es <code>wp-config.php<\/code>, que contiene las credenciales de la base de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear acceso a wp-config.php:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Files wp-config.php&gt;\n    Order Allow,Deny\n    Deny from all\n&lt;\/Files&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear el acceso al propio .htaccess:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Files .htaccess&gt;\n    Order Allow,Deny\n    Deny from all\n&lt;\/Files&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bloquear varios tipos de archivo a la vez (logs, backups, archivos de configuraci\u00f3n):<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;FilesMatch \"\\.(htaccess|htpasswd|ini|log|sh|sql|bak|config)$\"&gt;\n    Order Allow,Deny\n    Deny from all\n&lt;\/FilesMatch&gt;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"9_Compresion_Gzip_para_mejorar_la_velocidad\"><\/span>9. Compresi\u00f3n Gzip para mejorar la velocidad<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La compresi\u00f3n Gzip reduce el tama\u00f1o de los archivos que el servidor env\u00eda al navegador, acelerando la carga de la web. Es uno de los factores que eval\u00faa PageSpeed Insights y que influye en el Core Web Vitals.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_deflate.c&gt;\n    AddOutputFilterByType DEFLATE text\/html\n    AddOutputFilterByType DEFLATE text\/css\n    AddOutputFilterByType DEFLATE text\/javascript\n    AddOutputFilterByType DEFLATE text\/xml\n    AddOutputFilterByType DEFLATE text\/plain\n    AddOutputFilterByType DEFLATE application\/javascript\n    AddOutputFilterByType DEFLATE application\/x-javascript\n    AddOutputFilterByType DEFLATE application\/json\n    AddOutputFilterByType DEFLATE application\/xml\n    AddOutputFilterByType DEFLATE application\/rss+xml\n    AddOutputFilterByType DEFLATE image\/svg+xml\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Las im\u00e1genes (JPG, PNG, WebP, GIF) no se comprimen con Gzip porque ya son formatos comprimidos por naturaleza. Incluirlas no har\u00eda da\u00f1o, pero tampoco ning\u00fan beneficio.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"10_Cache_de_navegador_Expires_headers\"><\/span>10. Cach\u00e9 de navegador (Expires headers)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Indicarle al navegador que almacene ciertos recursos en cach\u00e9 evita que los descargue de nuevo en cada visita, acelerando significativamente las p\u00e1ginas para los visitantes recurrentes:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_expires.c&gt;\n    ExpiresActive On\n\n    # Im\u00e1genes \u2014 cach\u00e9 de 1 a\u00f1o\n    ExpiresByType image\/jpeg \"access plus 1 year\"\n    ExpiresByType image\/png \"access plus 1 year\"\n    ExpiresByType image\/gif \"access plus 1 year\"\n    ExpiresByType image\/webp \"access plus 1 year\"\n    ExpiresByType image\/svg+xml \"access plus 1 year\"\n    ExpiresByType image\/x-icon \"access plus 1 year\"\n\n    # CSS y JavaScript \u2014 cach\u00e9 de 1 mes\n    ExpiresByType text\/css \"access plus 1 month\"\n    ExpiresByType application\/javascript \"access plus 1 month\"\n    ExpiresByType text\/javascript \"access plus 1 month\"\n\n    # Fuentes \u2014 cach\u00e9 de 1 a\u00f1o\n    ExpiresByType font\/woff2 \"access plus 1 year\"\n    ExpiresByType font\/woff \"access plus 1 year\"\n    ExpiresByType application\/font-woff \"access plus 1 year\"\n\n    # HTML y datos \u2014 sin cach\u00e9 (siempre frescos)\n    ExpiresByType text\/html \"access plus 0 seconds\"\n    ExpiresByType application\/json \"access plus 0 seconds\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Si usas WordPress con un plugin de cach\u00e9 (WP Rocket, LiteSpeed Cache, W3 Total Cache\u2026), estos plugins ya gestionan los headers de cach\u00e9. Revisa que no haya conflicto antes de a\u00f1adir este bloque manualmente. Aqu\u00ed tienes nuestra gu\u00eda sobre los <a href=\"https:\/\/blumhost.net\/blog\/mejores-plugins-optimizar-wordpress-hosting-2026\/\" target=\"_blank\" rel=\"noreferrer noopener\">mejores plugins para optimizar tu hosting WordPress<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_Cabeceras_de_seguridad_HTTP\"><\/span>11. Cabeceras de seguridad HTTP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las cabeceras de seguridad HTTP le dicen al navegador c\u00f3mo debe comportarse al cargar tu web, protegiendo contra ataques comunes como XSS o clickjacking:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_headers.c&gt;\n    # Evita que tu web se cargue dentro de un iframe en otros dominios (anti-clickjacking)\n    Header always set X-Frame-Options \"SAMEORIGIN\"\n\n    # Activa la protecci\u00f3n XSS del navegador\n    Header always set X-XSS-Protection \"1; mode=block\"\n\n    # Evita que el navegador \"adivine\" el tipo de contenido\n    Header always set X-Content-Type-Options \"nosniff\"\n\n    # Fuerza HTTPS durante 1 a\u00f1o (solo activa esto si tu SSL es permanente)\n    Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"\n\n    # Controla qu\u00e9 informaci\u00f3n de referrer se env\u00eda\n    Header always set Referrer-Policy \"strict-origin-when-cross-origin\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Activa <code>Strict-Transport-Security<\/code> solo cuando est\u00e9s seguro de que siempre vas a mantener HTTPS activo. Una vez que el navegador recibe esta cabecera, intentar\u00e1 conectarse solo por HTTPS durante el per\u00edodo indicado, y si el certificado falla, el usuario no podr\u00e1 acceder.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"12_Limitar_el_tamano_maximo_de_subida_de_archivos\"><\/span>12. Limitar el tama\u00f1o m\u00e1ximo de subida de archivos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitas subir archivos grandes desde WordPress u otro CMS y el servidor los rechaza, puedes ajustar los l\u00edmites de PHP desde el <code>.htaccess<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php_value upload_max_filesize 64M\nphp_value post_max_size 128M\nphp_value max_execution_time 300\nphp_value max_input_time 300\nphp_value memory_limit 256M<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Esto funciona en hostings que permiten directivas PHP en <code>.htaccess<\/code> (como los planes de BlumHost con cPanel). En un VPS donde t\u00fa controlas la configuraci\u00f3n de PHP directamente, es m\u00e1s limpio editarlo desde <code>php.ini<\/code> o el selector de PHP del panel.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"13_Denegar_el_acceso_a_directorios_deshabilitar_Directory_Listing\"><\/span>13. Denegar el acceso a directorios (deshabilitar Directory Listing)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Por defecto, si una carpeta de tu servidor no tiene un archivo <code>index.html<\/code> o <code>index.php<\/code>, Apache muestra un listado de todos los archivos de esa carpeta. Eso puede exponer informaci\u00f3n que no quieres que sea p\u00fablica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para desactivarlo en todo el sitio:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Options -Indexes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es una de las l\u00edneas m\u00e1s cortas y m\u00e1s importantes de seguridad que puedes a\u00f1adir.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"14_Cambiar_la_pagina_de_inicio_por_defecto\"><\/span>14. Cambiar la p\u00e1gina de inicio por defecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si quieres que el servidor busque un archivo diferente a <code>index.php<\/code> o <code>index.html<\/code> como p\u00e1gina principal de un directorio:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DirectoryIndex inicio.html index.php index.html<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El servidor busca los archivos en el orden en que los listas. En el ejemplo anterior, busca primero <code>inicio.html<\/code>, luego <code>index.php<\/code>, luego <code>index.html<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"15_Bloquear_acceso_por_User-Agent_bots_maliciosos\"><\/span>15. Bloquear acceso por User-Agent (bots maliciosos)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos bots y scrapers usan User-Agents reconocibles. Puedes bloquearlos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTP_USER_AGENT} (scraper|harvester|wget|nikto|sqlmap) &#91;NC]\nRewriteRule .* - &#91;F,L]<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u00dasalo con precauci\u00f3n. Bloquear User-Agents demasiado gen\u00e9ricos puede afectar a bots leg\u00edtimos (incluido el de Google). Antes de a\u00f1adir un User-Agent a la lista, aseg\u00farate de que realmente es malicioso revisando los logs de acceso de tu servidor.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"El_htaccess_en_WordPress_lo_que_necesitas_saber\"><\/span>El .htaccess en WordPress: lo que necesitas saber<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress depende del <code>.htaccess<\/code> para funcionar correctamente, especialmente para las URLs amigables (permalinks). Aqu\u00ed van los puntos clave:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"El_bloque_que_no_debes_tocar\"><\/span>El bloque que no debes tocar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El bloque entre <code># BEGIN WordPress<\/code> y <code># END WordPress<\/code> lo genera y gestiona WordPress autom\u00e1ticamente. No lo edites manualmente: WordPress puede sobreescribirlo y perder\u00edas tus cambios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># BEGIN WordPress\n# Las directivas entre estos marcadores son generadas din\u00e1micamente por WordPress\n# y solo deben modificarse mediante filtros de WordPress.\n&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteBase \/\nRewriteRule ^index\\.php$ - &#91;L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule . \/index.php &#91;L]\n&lt;\/IfModule&gt;\n# END WordPress<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Donde_anadir_tus_propias_reglas\"><\/span>D\u00f3nde a\u00f1adir tus propias reglas<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1ade siempre tu c\u00f3digo <strong>por encima<\/strong> del bloque <code># BEGIN WordPress<\/code> o <strong>por debajo<\/strong> del <code># END WordPress<\/code>. Nunca dentro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Mis reglas personalizadas \u2014 ENCIMA del bloque de WordPress\nRewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} &#91;L,R=301]\n\n# BEGIN WordPress\n... (bloque generado por WordPress, no tocar)\n# END WordPress<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Plugins_que_modifican_el_htaccess\"><\/span>Plugins que modifican el .htaccess<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Muchos plugins de WordPress escriben sus propias reglas en el <code>.htaccess<\/code> autom\u00e1ticamente. Los m\u00e1s habituales son los plugins de cach\u00e9 (LiteSpeed Cache, WP Rocket, W3 Total Cache) y los de seguridad (Wordfence). Cuando desinstales un plugin de este tipo, revisa el <code>.htaccess<\/code> para asegurarte de que no quedaron reglas hu\u00e9rfanas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Regenerar_el_htaccess_de_WordPress\"><\/span>Regenerar el .htaccess de WordPress<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si el <code>.htaccess<\/code> se ha corrompido o perdido y las URLs de tu WordPress devuelven error 404:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ve a <strong>Ajustes \u2192 Enlaces permanentes<\/strong> en el panel de administraci\u00f3n de WordPress<\/li>\n\n\n\n<li>Sin cambiar nada, haz clic en <strong>Guardar cambios<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress recrear\u00e1 el <code>.htaccess<\/code> con el contenido m\u00ednimo necesario. Las reglas personalizadas que hayas a\u00f1adido manualmente se perder\u00e1n, por eso es fundamental mantener siempre una copia de seguridad.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Diferencias_entre_htaccess_en_hosting_compartido_y_en_VPS\"><\/span>Diferencias entre .htaccess en hosting compartido y en VPS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes un <strong>hosting compartido<\/strong> (como los <a href=\"https:\/\/blumhost.net\/hosting\" target=\"_blank\" rel=\"noreferrer noopener\">planes de hosting de BlumHost<\/a>), el <code>.htaccess<\/code> es tu principal herramienta de configuraci\u00f3n a nivel de servidor porque no tienes acceso root para modificar la configuraci\u00f3n global de Apache o LiteSpeed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes un <strong>VPS<\/strong> (<a href=\"https:\/\/blumhost.net\/vps\" target=\"_blank\" rel=\"noreferrer noopener\">servidores VPS de BlumHost<\/a>), tienes acceso root y puedes modificar directamente los archivos de configuraci\u00f3n del servidor (<code>\/etc\/apache2\/<\/code>, <code>\/etc\/nginx\/<\/code>\u2026). En ese caso, el <code>.htaccess<\/code> sigue siendo v\u00e1lido y funciona, pero para cambios globales del servidor es m\u00e1s eficiente y limpio editar la configuraci\u00f3n directamente que pasar por <code>.htaccess<\/code>. Adem\u00e1s, en Nginx el <code>.htaccess<\/code> directamente no funciona.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Para profundizar en la gesti\u00f3n de servidores VPS, consulta nuestra gu\u00eda sobre <a href=\"https:\/\/blumhost.net\/blog\/errores-comunes-gestion-servidor-vps\/\" target=\"_blank\" rel=\"noreferrer noopener\">los 10 errores m\u00e1s comunes al gestionar un servidor VPS<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Diagnostico_que_hacer_si_el_htaccess_rompe_tu_web\"><\/span>Diagn\u00f3stico: qu\u00e9 hacer si el .htaccess rompe tu web<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si tras editar el <code>.htaccess<\/code> tu web devuelve un <strong>error 500<\/strong> (Internal Server Error):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Accede al Administrador de Archivos de cPanel o por FTP<\/li>\n\n\n\n<li>Abre el <code>.htaccess<\/code> y elimina el \u00faltimo bloque de c\u00f3digo que a\u00f1adiste<\/li>\n\n\n\n<li>Guarda el archivo<\/li>\n\n\n\n<li>La web deber\u00eda recuperarse inmediatamente<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Si el error persiste o no sabes qu\u00e9 cambio lo caus\u00f3, la forma m\u00e1s r\u00e1pida es <strong>restaurar la copia de seguridad<\/strong> que hiciste antes de editar. Si no tienes copia, puedes ir a JetBackup en cPanel (incluido en todos los planes de BlumHost) y restaurar una versi\u00f3n anterior del archivo. Consulta c\u00f3mo hacerlo en nuestra gu\u00eda de <a href=\"https:\/\/blumhost.net\/blog\/jetbackup-restaurar-archivos-del-hosting-cpanel\/\" target=\"_blank\" rel=\"noreferrer noopener\">JetBackup: c\u00f3mo restaurar archivos en cPanel<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ver el error espec\u00edfico que est\u00e1 produciendo el <code>.htaccess<\/code>, revisa los <strong>logs de error<\/strong> del servidor: en cPanel est\u00e1n en la secci\u00f3n \u00abM\u00e9tricas\u00bb \u2192 \u00abErrores\u00bb.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Referencia_rapida_los_bloques_de_codigo_mas_usados\"><\/span>Referencia r\u00e1pida: los bloques de c\u00f3digo m\u00e1s usados<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para que tengas todo localizado de un vistazo:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Funci\u00f3n<\/th><th>C\u00f3digo clave<\/th><\/tr><\/thead><tbody><tr><td>Forzar HTTPS<\/td><td><code>RewriteCond %{HTTPS} off<\/code> + <code>RewriteRule<\/code><\/td><\/tr><tr><td>Redirect 301 simple<\/td><td><code>Redirect 301 \/url-vieja \/url-nueva<\/code><\/td><\/tr><tr><td>Forzar www<\/td><td><code>RewriteCond %{HTTP_HOST} !^www\\.<\/code><\/td><\/tr><tr><td>Quitar www<\/td><td><code>RewriteCond %{HTTP_HOST} ^www\\.<\/code><\/td><\/tr><tr><td>P\u00e1gina 404 personalizada<\/td><td><code>ErrorDocument 404 \/404.html<\/code><\/td><\/tr><tr><td>Bloquear IP<\/td><td><code>Require not ip 123.456.789.0<\/code><\/td><\/tr><tr><td>Bloquear hotlinking<\/td><td><code>RewriteCond %{HTTP_REFERER}<\/code> + `RewriteRule .(jpg<\/td><\/tr><tr><td>Proteger archivo<\/td><td><code>&lt;Files archivo.php&gt;<\/code> + <code>Deny from all<\/code><\/td><\/tr><tr><td>Deshabilitar Directory Listing<\/td><td><code>Options -Indexes<\/code><\/td><\/tr><tr><td>Compresi\u00f3n Gzip<\/td><td><code>&lt;IfModule mod_deflate.c&gt;<\/code><\/td><\/tr><tr><td>Cach\u00e9 de navegador<\/td><td><code>&lt;IfModule mod_expires.c&gt;<\/code><\/td><\/tr><tr><td>Cabeceras de seguridad<\/td><td><code>&lt;IfModule mod_headers.c&gt;<\/code><\/td><\/tr><tr><td>L\u00edmites PHP<\/td><td><code>php_value upload_max_filesize<\/code><\/td><\/tr><tr><td>Proteger carpeta con contrase\u00f1a<\/td><td><code>AuthType Basic<\/code> + <code>AuthUserFile<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusi\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>.htaccess<\/code> es uno de los archivos m\u00e1s vers\u00e1tiles que puedes controlar en tu hosting: desde simples redirecciones hasta reglas de seguridad avanzadas, pasando por optimizaci\u00f3n de velocidad. Aprender a usarlo correctamente te da un control real sobre el comportamiento de tu servidor sin necesitar acceso root ni tocar la configuraci\u00f3n global.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las claves para usarlo bien son tres: hacer siempre copia antes de editar, probar un cambio a la vez y no a\u00f1adir reglas que no entiendes o que no necesitas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes un hosting con cPanel en BlumHost, todos los ejemplos de esta gu\u00eda funcionan directamente. Y si en alg\u00fan momento algo falla o tienes dudas, el equipo de soporte est\u00e1 disponible 24\/7 para ayudarte. Puedes consultar los <a href=\"https:\/\/blumhost.net\/hosting-wordpress\" target=\"_blank\" rel=\"noreferrer noopener\">planes de hosting<\/a> o <a href=\"https:\/\/blumhost.net\/contacto\" target=\"_blank\" rel=\"noreferrer noopener\">contactar con nosotros<\/a> si necesitas orientaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si tienes un hosting compartido con cPanel, hay un archivo que controla en silencio buena parte de lo que ocurre en tu servidor: el .htaccess. Cada redirecci\u00f3n que funciona, cada p\u00e1gina de error personalizada, cada bloqueo de IP o cada&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,59,66,75],"tags":[17,22,20,120],"class_list":["post-436","post","type-post","status-publish","format-standard","hentry","category-hosting-cpanel","category-seguridad-web","category-tutoriales","category-wordpress","tag-hosting","tag-hosting-con-cpanel","tag-hosting-cpanel","tag-htaccess"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost<\/title>\n<meta name=\"description\" content=\"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost\" \/>\n<meta property=\"og:description\" content=\"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog de BlumHost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BlumHost\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-22T06:27:00+00:00\" \/>\n<meta name=\"author\" content=\"Miguel Taboada\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Miguel Taboada\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\"},\"author\":{\"name\":\"Miguel Taboada\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7\"},\"headline\":\"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026)\",\"datePublished\":\"2026-05-22T06:27:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\"},\"wordCount\":2943,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\"},\"keywords\":[\"hosting\",\"hosting con cPanel\",\"hosting cPanel\",\"htaccess\"],\"articleSection\":[\"Hosting cPanel\",\"Seguridad Web\",\"tutoriales\",\"WordPress\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\",\"url\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\",\"name\":\"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost\",\"isPartOf\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#website\"},\"datePublished\":\"2026-05-22T06:27:00+00:00\",\"description\":\"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.\",\"breadcrumb\":{\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/blumhost.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blumhost.net\/blog\/#website\",\"url\":\"https:\/\/blumhost.net\/blog\/\",\"name\":\"Blog de BlumHost\",\"description\":\"Gu\u00eda completa con consejos pr\u00e1cticos, precios y ventajas reales para tu proyecto.\",\"publisher\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blumhost.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\",\"name\":\"Blog de BlumHost\",\"url\":\"https:\/\/blumhost.net\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp\",\"contentUrl\":\"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp\",\"width\":240,\"height\":67,\"caption\":\"Blog de BlumHost\"},\"image\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/BlumHost\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7\",\"name\":\"Miguel Taboada\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g\",\"caption\":\"Miguel Taboada\"},\"description\":\"Ingeniero en Telecomunicaciones e Inform\u00e1tica. Cre\u00e9 BlumHost para ofrecer un hosting distinto a los dem\u00e1s, que ofrezca la mejor atenci\u00f3n al cliente, al menor precio y con la mejor calidad.\",\"sameAs\":[\"https:\/\/blumhost.net\/\",\"https:\/\/es.linkedin.com\/in\/miguel-taboada-iglesias\"],\"url\":\"https:\/\/blumhost.net\/blog\/author\/miguel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost","description":"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/","og_locale":"es_ES","og_type":"article","og_title":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost","og_description":"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.","og_url":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/","og_site_name":"Blog de BlumHost","article_publisher":"https:\/\/www.facebook.com\/BlumHost","article_published_time":"2026-05-22T06:27:00+00:00","author":"Miguel Taboada","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Miguel Taboada","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#article","isPartOf":{"@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/"},"author":{"name":"Miguel Taboada","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7"},"headline":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026)","datePublished":"2026-05-22T06:27:00+00:00","mainEntityOfPage":{"@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/"},"wordCount":2943,"commentCount":0,"publisher":{"@id":"https:\/\/blumhost.net\/blog\/#organization"},"keywords":["hosting","hosting con cPanel","hosting cPanel","htaccess"],"articleSection":["Hosting cPanel","Seguridad Web","tutoriales","WordPress"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/","url":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/","name":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026) - Blog de BlumHost","isPartOf":{"@id":"https:\/\/blumhost.net\/blog\/#website"},"datePublished":"2026-05-22T06:27:00+00:00","description":"Todo sobre el archivo .htaccess: qu\u00e9 es, c\u00f3mo editarlo en cPanel y los ejemplos de c\u00f3digo m\u00e1s \u00fatiles para redireccionamientos, seguridad, cach\u00e9, WordPress y mucho m\u00e1s.","breadcrumb":{"@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blumhost.net\/blog\/htaccess-guia-completa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blumhost.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Qu\u00e9 es el archivo .htaccess y c\u00f3mo usarlo: gu\u00eda completa con ejemplos (2026)"}]},{"@type":"WebSite","@id":"https:\/\/blumhost.net\/blog\/#website","url":"https:\/\/blumhost.net\/blog\/","name":"Blog de BlumHost","description":"Gu\u00eda completa con consejos pr\u00e1cticos, precios y ventajas reales para tu proyecto.","publisher":{"@id":"https:\/\/blumhost.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blumhost.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blumhost.net\/blog\/#organization","name":"Blog de BlumHost","url":"https:\/\/blumhost.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp","contentUrl":"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp","width":240,"height":67,"caption":"Blog de BlumHost"},"image":{"@id":"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/BlumHost"]},{"@type":"Person","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7","name":"Miguel Taboada","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g","caption":"Miguel Taboada"},"description":"Ingeniero en Telecomunicaciones e Inform\u00e1tica. Cre\u00e9 BlumHost para ofrecer un hosting distinto a los dem\u00e1s, que ofrezca la mejor atenci\u00f3n al cliente, al menor precio y con la mejor calidad.","sameAs":["https:\/\/blumhost.net\/","https:\/\/es.linkedin.com\/in\/miguel-taboada-iglesias"],"url":"https:\/\/blumhost.net\/blog\/author\/miguel\/"}]}},"_links":{"self":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/comments?post=436"}],"version-history":[{"count":1,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/436\/revisions"}],"predecessor-version":[{"id":437,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/436\/revisions\/437"}],"wp:attachment":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/media?parent=436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/categories?post=436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/tags?post=436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}