{"id":3870,"date":"2026-10-02T00:45:47","date_gmt":"2026-10-01T22:45:47","guid":{"rendered":"https:\/\/mantenimientoweb.pro\/blog\/como-forzar-la-carga-mediante-el-protocolo-https-en-un-sitio-html-puro-2\/"},"modified":"2026-10-02T00:45:50","modified_gmt":"2026-10-01T22:45:50","slug":"como-forzar-la-carga-mediante-el-protocolo-https-en-un-sitio-html-puro-2","status":"publish","type":"post","link":"https:\/\/mantenimientoweb.pro\/blog\/como-forzar-la-carga-mediante-el-protocolo-https-en-un-sitio-html-puro-2\/","title":{"rendered":"\u00bfC\u00f3mo forzar la carga mediante el protocolo HTTPS en un sitio HTML puro?"},"content":{"rendered":"<header>\n<p>      \u00bfC\u00f3mo forzar la carga mediante HTTPS en un sitio HTML puro? \ud83d\udd10<\/p>\n<p>Hay sitios que todav\u00eda abren por HTTP como quien deja la puerta entornada \u201csolo un momento\u201d. Y, claro, ese momento suele coincidir con el instante exacto en que alguien escucha, modifica o secuestra lo que viaja entre el navegador y el servidor. Forzar HTTPS en un sitio HTML puro no es un lujo moderno: es higiene b\u00e1sica, reputaci\u00f3n t\u00e9cnica y, a veces, la delgada l\u00ednea entre una web confiable y una advertencia roja del navegador.<\/p>\n<\/header>\n<article>\n<p>La pregunta parece sencilla: <strong>\u201c\u00bfC\u00f3mo obligo a que mi sitio HTML cargue siempre con HTTPS?\u201d<\/strong>. Pero debajo hay una peque\u00f1a trampa, una de esas iron\u00edas discretas que tanto abundan en la web: <strong>HTML no puede forzar HTTPS por s\u00ed solo<\/strong>. El lenguaje que pinta titulares, botones e im\u00e1genes no gobierna la conexi\u00f3n segura. Es como pedirle al men\u00fa del restaurante que cierre la cocina con llave.<\/p>\n<p>Para imponer HTTPS de verdad hay que actuar donde corresponde: en el servidor web, el proveedor de hosting, el CDN, el balanceador de carga o la configuraci\u00f3n DNS\/SSL de la plataforma. El HTML puede ayudar a evitar contenido mixto, definir URLs can\u00f3nicas y ordenar la casa, s\u00ed; pero la autoridad sobre el protocolo nace antes de que el navegador lea siquiera la primera etiqueta <code>&lt;html&gt;<\/code>.<\/p>\n<p>      <strong>Contenido de esta gu\u00eda<\/strong><\/p>\n<ol>\n<li><a href=\"#que-significa\">Qu\u00e9 significa realmente forzar HTTPS<\/a><\/li>\n<li><a href=\"#requisitos\">Requisitos previos: certificado SSL\/TLS y servidor correctamente configurado<\/a><\/li>\n<li><a href=\"#apache\">Forzar HTTPS en Apache con .htaccess<\/a><\/li>\n<li><a href=\"#nginx\">Forzar HTTPS en Nginx<\/a><\/li>\n<li><a href=\"#hosting\">Opciones en cPanel, Cloudflare, Netlify, GitHub Pages y otros entornos<\/a><\/li>\n<li><a href=\"#html-puro\">Qu\u00e9 debes cambiar dentro de un sitio HTML est\u00e1tico<\/a><\/li>\n<li><a href=\"#hsts\">HSTS: el candado con memoria<\/a><\/li>\n<li><a href=\"#mixed-content\">Contenido mixto: el enemigo que entra por la ventana<\/a><\/li>\n<li><a href=\"#seo\">SEO, redirecciones 301 y se\u00f1ales can\u00f3nicas<\/a><\/li>\n<li><a href=\"#verificacion\">C\u00f3mo comprobar que todo funciona<\/a><\/li>\n<li><a href=\"#errores\">Errores frecuentes y c\u00f3mo resolverlos<\/a><\/li>\n<\/ol>\n<h2 id=\"que-significa\">Qu\u00e9 significa realmente forzar HTTPS<\/h2>\n<p>Forzar HTTPS significa que cualquier intento de acceder a una URL mediante <code>http:\/\/<\/code> sea redirigido autom\u00e1ticamente a su versi\u00f3n segura <code>https:\/\/<\/code>. Si alguien escribe:<\/p>\n<pre><code>http:\/\/ejemplo.com\/contacto.html<\/code><\/pre>\n<p>el servidor debe responder con una redirecci\u00f3n, normalmente <strong>301 permanente<\/strong>, hacia:<\/p>\n<pre><code>https:\/\/ejemplo.com\/contacto.html<\/code><\/pre>\n<p>La ant\u00edtesis es clara: HTTP transmite como una postal, HTTPS como una carta sellada. No es que el contenido de la postal sea necesariamente vergonzoso; es que cualquiera en el camino puede leerla, copiarla o cambiarla. En una web de solo HTML \u2014sin formularios complejos, sin carrito, sin \u00e1rea privada\u2014 puede parecer exagerado. Pero hoy incluso una p\u00e1gina est\u00e1tica carga fuentes, scripts, im\u00e1genes, anal\u00edtica, mapas, p\u00edxeles, formularios embebidos. El viejo folleto digital se ha convertido en una peque\u00f1a plaza p\u00fablica con vendedores, c\u00e1maras y transe\u00fantes.<\/p>\n<p>HTTPS aporta tres garant\u00edas principales:<\/p>\n<ul>\n<li><strong>Cifrado:<\/strong> protege los datos en tr\u00e1nsito para que no viajen expuestos.<\/li>\n<li><strong>Integridad:<\/strong> dificulta que un intermediario altere la respuesta del servidor.<\/li>\n<li><strong>Autenticidad:<\/strong> permite al navegador verificar que est\u00e1 hablando con el dominio correcto mediante un certificado TLS v\u00e1lido.<\/li>\n<\/ul>\n<p>Desde hace a\u00f1os, los principales navegadores marcan HTTP como \u201cNo seguro\u201d. Google Chrome empez\u00f3 a endurecer estas advertencias progresivamente desde 2018, y el mensaje cultural fue rotundo: la web sin cifrado dej\u00f3 de ser normal. Como tantas revoluciones t\u00e9cnicas, lleg\u00f3 disfrazada de peque\u00f1o icono en la barra de direcciones.<\/p>\n<h2 id=\"requisitos\">Requisitos previos: no se puede redirigir a una casa que no existe \ud83c\udfe0<\/h2>\n<p>Antes de forzar HTTPS, tu sitio debe poder cargar correctamente por HTTPS. Parece obvio, pero no lo es tanto. He visto m\u00e1s de una web con redirecci\u00f3n impecable hacia una p\u00e1gina que acababa mostrando un error de certificado. La seguridad convertida en callej\u00f3n sin salida: un prodigio de eficiencia malgastada.<\/p>\n<p>Necesitas:<\/p>\n<ol>\n<li><strong>Un certificado SSL\/TLS v\u00e1lido<\/strong> para tu dominio, incluyendo <code>www<\/code> si lo usas.<\/li>\n<li><strong>El servidor configurado para servir el sitio en el puerto 443<\/strong>.<\/li>\n<li><strong>Una cadena de certificados correcta<\/strong>, con intermedios bien instalados.<\/li>\n<li><strong>Redirecciones limpias<\/strong>, sin bucles ni saltos innecesarios.<\/li>\n<li><strong>Recursos internos cargando por HTTPS<\/strong>, para evitar contenido mixto.<\/li>\n<\/ol>\n<p><strong>Dato \u00fatil:<\/strong> hoy puedes obtener certificados gratuitos con Let\u2019s Encrypt en la mayor\u00eda de hostings. Muchos paneles como cPanel, Plesk, DirectAdmin o proveedores administrados los activan con un clic. Gratis no significa improvisado: Let\u2019s Encrypt es una autoridad certificadora ampliamente aceptada y automatizada.<\/p>\n<h3>HTTP, HTTPS, SSL y TLS: nombres que conviene ordenar<\/h3>\n<p>Se suele decir \u201ccertificado SSL\u201d, aunque t\u00e9cnicamente el protocolo moderno es <strong>TLS<\/strong>. SSL es el nombre antiguo que qued\u00f3 pegado al habla cotidiana como esas palabras de la infancia que sobreviven aunque ya no sean exactas. En la pr\u00e1ctica, cuando un hosting dice \u201cactivar SSL\u201d, normalmente est\u00e1 hablando de habilitar HTTPS mediante TLS.<\/p>\n<p>Si tienes un sitio HTML puro, es decir, archivos como <code>index.html<\/code>, <code>servicios.html<\/code>, <code>contacto.html<\/code>, carpetas de im\u00e1genes, CSS y JavaScript, la l\u00f3gica no cambia: <strong>la redirecci\u00f3n se configura fuera del HTML<\/strong>.<\/p>\n<h2 id=\"apache\">Forzar HTTPS en Apache con .htaccess<\/h2>\n<p>Apache sigue siendo uno de los servidores m\u00e1s comunes en alojamientos compartidos. Si tu hosting permite usar archivos <code>.htaccess<\/code>, esta suele ser la v\u00eda m\u00e1s r\u00e1pida.<\/p>\n<p>Coloca o edita el archivo <code>.htaccess<\/code> en la ra\u00edz p\u00fablica de tu sitio, normalmente <code>public_html<\/code>, <code>www<\/code> o la carpeta donde se encuentra tu <code>index.html<\/code>.<\/p>\n<h3>Redirecci\u00f3n b\u00e1sica de HTTP a HTTPS<\/h3>\n<pre><code>RewriteEngine On\n\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<p>Esta regla indica: si la conexi\u00f3n no es HTTPS, redirige al mismo host y a la misma ruta, pero usando <code>https:\/\/<\/code>.<\/p>\n<h3>Redirecci\u00f3n HTTPS y dominio con www<\/h3>\n<p>Si quieres que todo cargue en <code>https:\/\/www.ejemplo.com<\/code>, incluso cuando alguien entra por <code>http:\/\/ejemplo.com<\/code>, puedes usar:<\/p>\n<pre><code>RewriteEngine On\n\nRewriteCond %{HTTPS} off [OR]\nRewriteCond %{HTTP_HOST} !^www\\.ejemplo\\.com$ [NC]\nRewriteRule ^(.*)$ https:\/\/www.ejemplo.com%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<h3>Redirecci\u00f3n HTTPS y dominio sin www<\/h3>\n<p>Si prefieres la versi\u00f3n sin <code>www<\/code>, que hoy es bastante habitual:<\/p>\n<pre><code>RewriteEngine On\n\nRewriteCond %{HTTPS} off [OR]\nRewriteCond %{HTTP_HOST} ^www\\.ejemplo\\.com$ [NC]\nRewriteRule ^(.*)$ https:\/\/ejemplo.com%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<p><strong>Cuidado:<\/strong> sustituye <code>ejemplo.com<\/code> por tu dominio real. Y no mezcles reglas copiadas de varios tutoriales como quien prepara una sopa con todos los condimentos del armario. Las redirecciones duplicadas pueden generar bucles, cadenas largas o comportamientos intermitentes.<\/p>\n<h3>Cuando Apache est\u00e1 detr\u00e1s de un proxy o CDN<\/h3>\n<p>Si usas Cloudflare, un balanceador de carga o un proxy inverso, puede ocurrir que Apache \u201cvea\u201d la conexi\u00f3n como HTTP aunque el visitante haya llegado por HTTPS al proxy. En ese caso, la variable <code>%{HTTPS}<\/code> puede no bastar.<\/p>\n<p>Algunos entornos env\u00edan la cabecera <code>X-Forwarded-Proto<\/code>. Podr\u00edas necesitar algo como:<\/p>\n<pre><code>RewriteEngine On\n\nRewriteCond %{HTTP:X-Forwarded-Proto} !https\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<p>No todos los servidores gestionan igual estas cabeceras. Si usas hosting administrado, conviene revisar la documentaci\u00f3n del proveedor antes de convertir el <code>.htaccess<\/code> en una novela rusa.<\/p>\n<h2 id=\"nginx\">Forzar HTTPS en Nginx<\/h2>\n<p>Nginx no usa <code>.htaccess<\/code>. Sus reglas se definen en la configuraci\u00f3n del servidor, normalmente en archivos dentro de <code>\/etc\/nginx\/sites-available\/<\/code>, <code>\/etc\/nginx\/conf.d\/<\/code> o configuraciones equivalentes seg\u00fan la distribuci\u00f3n.<\/p>\n<h3>Redirecci\u00f3n b\u00e1sica en Nginx<\/h3>\n<pre><code>server {\n    listen 80;\n    listen [::]:80;\n    server_name ejemplo.com www.ejemplo.com;\n\n    return 301 https:\/\/$host$request_uri;\n}<\/code><\/pre>\n<p>Y luego tu bloque HTTPS:<\/p>\n<pre><code>server {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name ejemplo.com www.ejemplo.com;\n\n    ssl_certificate \/ruta\/al\/certificado\/fullchain.pem;\n    ssl_certificate_key \/ruta\/a\/la\/clave\/privkey.pem;\n\n    root \/var\/www\/ejemplo;\n    index index.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}<\/code><\/pre>\n<h3>Forzar HTTPS y versi\u00f3n sin www<\/h3>\n<pre><code>server {\n    listen 80;\n    listen [::]:80;\n    server_name ejemplo.com www.ejemplo.com;\n\n    return 301 https:\/\/ejemplo.com$request_uri;\n}\n\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name www.ejemplo.com;\n\n    ssl_certificate \/ruta\/al\/certificado\/fullchain.pem;\n    ssl_certificate_key \/ruta\/a\/la\/clave\/privkey.pem;\n\n    return 301 https:\/\/ejemplo.com$request_uri;\n}\n\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name ejemplo.com;\n\n    ssl_certificate \/ruta\/al\/certificado\/fullchain.pem;\n    ssl_certificate_key \/ruta\/a\/la\/clave\/privkey.pem;\n\n    root \/var\/www\/ejemplo;\n    index index.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}<\/code><\/pre>\n<p>Despu\u00e9s de editar, conviene probar la configuraci\u00f3n y recargar el servicio:<\/p>\n<pre><code>sudo nginx -t\nsudo systemctl reload nginx<\/code><\/pre>\n<p><strong>Buena pr\u00e1ctica:<\/strong> evita hacer redirecciones en cascada. Lo ideal es que cualquier variante llegue a la URL final en un solo salto: de <code>http:\/\/www.ejemplo.com\/pagina.html<\/code> directamente a <code>https:\/\/ejemplo.com\/pagina.html<\/code>, no pasando primero por HTTPS con www y despu\u00e9s sin www.<\/p>\n<h2 id=\"hosting\">C\u00f3mo hacerlo seg\u00fan tu plataforma o proveedor \u2699\ufe0f<\/h2>\n<p>No todos los sitios HTML viven en un servidor cl\u00e1sico. Algunos descansan en alojamientos compartidos, otros en CDNs, otros en plataformas est\u00e1ticas que despliegan desde Git. La web moderna es un archipi\u00e9lago: muchas islas, cada una con su propio faro.<\/p>\n<table>\n<thead>\n<tr>\n<th>Entorno<\/th>\n<th>C\u00f3mo forzar HTTPS<\/th>\n<th>Notas importantes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cPanel \/ hosting compartido<\/td>\n<td>Activar SSL\/TLS y usar \u201cForce HTTPS Redirect\u201d si est\u00e1 disponible, o a\u00f1adir reglas en <code>.htaccess<\/code>.<\/td>\n<td>Comprueba que el certificado cubra <code>www<\/code> y dominio ra\u00edz.<\/td>\n<\/tr>\n<tr>\n<td>Plesk<\/td>\n<td>Activar certificado Let\u2019s Encrypt y marcar \u201cPermanent SEO-safe 301 redirect from HTTP to HTTPS\u201d.<\/td>\n<td>Puede incluir HSTS desde el panel; act\u00edvalo solo si ya verificaste todo.<\/td>\n<\/tr>\n<tr>\n<td>Cloudflare<\/td>\n<td>SSL\/TLS en modo <strong>Full<\/strong> o <strong>Full (strict)<\/strong>, y activar \u201cAlways Use HTTPS\u201d.<\/td>\n<td>Evita \u201cFlexible\u201d si puedes; puede causar bucles y no cifra del todo entre Cloudflare y tu servidor.<\/td>\n<\/tr>\n<tr>\n<td>Netlify<\/td>\n<td>HTTPS autom\u00e1tico con Let\u2019s Encrypt. Puedes forzar con archivo <code>_redirects<\/code> o configuraci\u00f3n del panel.<\/td>\n<td>Netlify suele gestionar HTTPS de forma muy limpia para sitios est\u00e1ticos.<\/td>\n<\/tr>\n<tr>\n<td>Vercel<\/td>\n<td>HTTPS autom\u00e1tico para dominios configurados. Las redirecciones se gestionan desde <code>vercel.json<\/code>.<\/td>\n<td>\u00datil si tu HTML forma parte de un proyecto est\u00e1tico o frontend.<\/td>\n<\/tr>\n<tr>\n<td>GitHub Pages<\/td>\n<td>Activar \u201cEnforce HTTPS\u201d en la configuraci\u00f3n del repositorio.<\/td>\n<td>El DNS debe estar correctamente configurado; puede tardar en emitir el certificado.<\/td>\n<\/tr>\n<tr>\n<td>Amazon S3 + CloudFront<\/td>\n<td>Usar CloudFront con certificado ACM y redirecci\u00f3n HTTP to HTTPS en el comportamiento del distribution.<\/td>\n<td>S3 website hosting por s\u00ed solo no soporta HTTPS con dominio personalizado sin CloudFront.<\/td>\n<\/tr>\n<tr>\n<td>IIS \/ Windows Server<\/td>\n<td>Usar URL Rewrite con regla de redirecci\u00f3n permanente a HTTPS.<\/td>\n<td>Necesitas instalar el m\u00f3dulo URL Rewrite si no est\u00e1 disponible.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Cloudflare: una menci\u00f3n especial<\/h3>\n<p>Cloudflare es magn\u00edfico cuando se configura bien y un laberinto con alfombra roja cuando se configura a medias. Para forzar HTTPS:<\/p>\n<ol>\n<li>Entra en Cloudflare.<\/li>\n<li>Ve a <span>SSL\/TLS<\/span>.<\/li>\n<li>Usa preferiblemente <strong>Full (strict)<\/strong>, si tu servidor tiene certificado v\u00e1lido.<\/li>\n<li>Ve a <span>SSL\/TLS<\/span> \u2192 <span>Edge Certificates<\/span>.<\/li>\n<li>Activa <strong>Always Use HTTPS<\/strong>.<\/li>\n<li>Opcionalmente, activa <strong>Automatic HTTPS Rewrites<\/strong> para ayudar con recursos mixtos.<\/li>\n<\/ol>\n<p><strong>No confundas \u201cFlexible SSL\u201d con seguridad completa.<\/strong> En modo Flexible, el visitante se conecta por HTTPS a Cloudflare, pero Cloudflare puede conectarse por HTTP a tu servidor. Es como poner una puerta blindada en la entrada y dejar abierta la del patio. A veces sirve como transici\u00f3n, pero no deber\u00eda ser el destino final.<\/p>\n<h2 id=\"html-puro\">Qu\u00e9 debes cambiar dentro de un sitio HTML puro<\/h2>\n<p>Aunque el HTML no puede forzar HTTPS desde el inicio de la conexi\u00f3n, s\u00ed puede reforzar la coherencia del sitio. Aqu\u00ed empieza el trabajo fino, ese que no se ve en la fachada pero evita goteras.<\/p>\n<h3>1. Usa enlaces internos relativos o HTTPS absoluto<\/h3>\n<p>Si en tu HTML tienes enlaces internos con HTTP:<\/p>\n<pre><code>&lt;a href=\"http:\/\/ejemplo.com\/servicios.html\"&gt;Servicios&lt;\/a&gt;<\/code><\/pre>\n<p>c\u00e1mbialos a:<\/p>\n<pre><code>&lt;a href=\"https:\/\/ejemplo.com\/servicios.html\"&gt;Servicios&lt;\/a&gt;<\/code><\/pre>\n<p>o, mejor a\u00fan, si se trata de enlaces dentro del mismo dominio:<\/p>\n<pre><code>&lt;a href=\"\/servicios.html\"&gt;Servicios&lt;\/a&gt;<\/code><\/pre>\n<p>Las rutas relativas al dominio suelen ser m\u00e1s limpias y evitan atarte a un protocolo en cada enlace.<\/p>\n<h3>2. Actualiza im\u00e1genes, CSS, JavaScript y fuentes<\/h3>\n<p>Busca referencias como estas:<\/p>\n<pre><code>&lt;img src=\"http:\/\/ejemplo.com\/img\/logo.png\" alt=\"Logo\"&gt;\n&lt;link rel=\"stylesheet\" href=\"http:\/\/ejemplo.com\/css\/estilos.css\"&gt;\n&lt;script src=\"http:\/\/ejemplo.com\/js\/app.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>y c\u00e1mbialas por:<\/p>\n<pre><code>&lt;img src=\"\/img\/logo.png\" alt=\"Logo\"&gt;\n&lt;link rel=\"stylesheet\" href=\"\/css\/estilos.css\"&gt;\n&lt;script src=\"\/js\/app.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Para recursos externos, usa siempre <code>https:\/\/<\/code> si el proveedor lo soporta:<\/p>\n<pre><code>&lt;script src=\"https:\/\/cdn.ejemploexterno.com\/libreria.min.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<h3>3. A\u00f1ade etiqueta canonical con HTTPS<\/h3>\n<p>En cada p\u00e1gina importante, define la URL can\u00f3nica con HTTPS:<\/p>\n<pre><code>&lt;link rel=\"canonical\" href=\"https:\/\/ejemplo.com\/pagina.html\"&gt;<\/code><\/pre>\n<p>Esto ayuda a los motores de b\u00fasqueda a entender cu\u00e1l es la versi\u00f3n preferida. No sustituye una redirecci\u00f3n 301, pero la acompa\u00f1a como un buen cartel acompa\u00f1a a una carretera bien trazada.<\/p>\n<h3>4. Actualiza Open Graph, Twitter Cards y datos estructurados<\/h3>\n<p>Si usas metadatos sociales, revisa que apunten a HTTPS:<\/p>\n<pre><code>&lt;meta property=\"og:url\" content=\"https:\/\/ejemplo.com\/pagina.html\"&gt;\n&lt;meta property=\"og:image\" content=\"https:\/\/ejemplo.com\/img\/imagen-social.jpg\"&gt;<\/code><\/pre>\n<p>Lo mismo aplica para JSON-LD:<\/p>\n<pre><code>&lt;script type=\"application\/ld+json\"&gt;\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"WebSite\",\n  \"url\": \"https:\/\/ejemplo.com\/\"\n}\n&lt;\/script&gt;<\/code><\/pre>\n<h3>5. Actualiza sitemap.xml y robots.txt<\/h3>\n<p>Tu <code>sitemap.xml<\/code> debe listar URLs HTTPS:<\/p>\n<pre><code>&lt;url&gt;\n  &lt;loc&gt;https:\/\/ejemplo.com\/&lt;\/loc&gt;\n&lt;\/url&gt;<\/code><\/pre>\n<p>Y si en <code>robots.txt<\/code> indicas el sitemap, hazlo tambi\u00e9n con HTTPS:<\/p>\n<pre><code>Sitemap: https:\/\/ejemplo.com\/sitemap.xml<\/code><\/pre>\n<h2 id=\"hsts\">HSTS: el candado con memoria \ud83e\udde0\ud83d\udd12<\/h2>\n<p>Una redirecci\u00f3n 301 le dice al navegador: \u201csi vienes por HTTP, ve a HTTPS\u201d. HSTS \u2014HTTP Strict Transport Security\u2014 va un paso m\u00e1s all\u00e1: le dice al navegador que, durante cierto tiempo, <strong>ni siquiera intente usar HTTP<\/strong> para ese dominio.<\/p>\n<p>Es una idea elegante, casi severa. Como un portero que no discute con nadie: si la lista dice HTTPS, se entra por HTTPS.<\/p>\n<p>La cabecera b\u00e1sica es:<\/p>\n<pre><code>Strict-Transport-Security: max-age=31536000; includeSubDomains<\/code><\/pre>\n<p>Eso indica que durante un a\u00f1o \u201431.536.000 segundos\u2014 el navegador debe usar HTTPS para ese dominio. Si a\u00f1ades <code>preload<\/code>, podr\u00edas solicitar la inclusi\u00f3n en la lista de precarga de navegadores, pero hay que hacerlo con prudencia.<\/p>\n<h3>HSTS en Apache<\/h3>\n<p>En <code>.htaccess<\/code>, si el m\u00f3dulo <code>headers<\/code> est\u00e1 disponible:<\/p>\n<pre><code>&lt;IfModule mod_headers.c&gt;\n  Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n<h3>HSTS en Nginx<\/h3>\n<pre><code>add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;<\/code><\/pre>\n<p><strong>Activa HSTS solo cuando est\u00e9s seguro.<\/strong> Si incluyes subdominios y alguno no tiene HTTPS funcional, puedes dejarlo inaccesible para usuarios que ya recibieron la cabecera. HSTS es poderoso; no es una pegatina decorativa.<\/p>\n<h3>\u00bfConviene usar HSTS preload?<\/h3>\n<p>El preload hace que los navegadores sepan de antemano que tu dominio debe cargarse por HTTPS, incluso antes de la primera visita. Para entrar en esa lista normalmente se exige una cabecera como:<\/p>\n<pre><code>Strict-Transport-Security: max-age=31536000; includeSubDomains; preload<\/code><\/pre>\n<p>Y cumplir requisitos espec\u00edficos, como redirigir HTTP a HTTPS y servir HTTPS correctamente en todo el dominio y subdominios incluidos. Es excelente para marcas consolidadas, bancos, plataformas con alta exposici\u00f3n y proyectos donde todos los subdominios est\u00e1n bajo control. Para un sitio peque\u00f1o que todav\u00eda est\u00e1 reorganizando DNS, correos, subdominios de pruebas y experimentos nocturnos, puede ser demasiado definitivo. Hay herramientas que se parecen a una llave; esta se parece m\u00e1s a soldar la puerta.<\/p>\n<h2 id=\"mixed-content\">Contenido mixto: cuando el sitio entra seguro y sale distra\u00eddo \ud83e\udde9<\/h2>\n<p>El contenido mixto ocurre cuando una p\u00e1gina cargada por HTTPS solicita recursos mediante HTTP. Por ejemplo:<\/p>\n<pre><code>&lt;img src=\"http:\/\/otrodominio.com\/banner.jpg\" alt=\"Banner\"&gt;<\/code><\/pre>\n<p>o:<\/p>\n<pre><code>&lt;script src=\"http:\/\/cdn.antiguo.com\/plugin.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>El navegador puede bloquear esos recursos o mostrar advertencias. En especial, los scripts y hojas de estilo por HTTP son peligrosos porque pueden alterar el comportamiento de la p\u00e1gina. Es la paradoja del castillo con foso y puente levadizo\u2026 y una ventana abierta en la despensa.<\/p>\n<h3>C\u00f3mo detectar contenido mixto<\/h3>\n<ul>\n<li>Abre la web en Chrome, Firefox o Edge.<\/li>\n<li>Presiona <span>F12<\/span> o abre las herramientas de desarrollo.<\/li>\n<li>Ve a la pesta\u00f1a <span>Console<\/span>.<\/li>\n<li>Busca mensajes como <em>Mixed Content<\/em> o <em>blocked insecure content<\/em>.<\/li>\n<li>Revisa tambi\u00e9n la pesta\u00f1a <span>Network<\/span> y filtra por <code>http:\/\/<\/code>.<\/li>\n<\/ul>\n<h3>Usar Content Security Policy para actualizar solicitudes inseguras<\/h3>\n<p>Una medida complementaria es enviar una cabecera CSP con <code>upgrade-insecure-requests<\/code>. Esta instrucci\u00f3n pide al navegador que intente convertir solicitudes HTTP a HTTPS autom\u00e1ticamente.<\/p>\n<p>En HTML, puedes a\u00f1adir:<\/p>\n<pre><code>&lt;meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\"&gt;<\/code><\/pre>\n<p>Pero es mejor enviarlo como cabecera desde el servidor cuando sea posible:<\/p>\n<pre><code>Content-Security-Policy: upgrade-insecure-requests<\/code><\/pre>\n<p><strong>Importante:<\/strong> esta directiva no hace magia. Si el recurso externo no existe por HTTPS, puede fallar. Sirve como red de seguridad, no como sustituto de limpiar tus URLs.<\/p>\n<h2 id=\"seo\">HTTPS, SEO y redirecciones 301: no solo seguridad, tambi\u00e9n se\u00f1al de confianza \ud83d\udcc8<\/h2>\n<p>Google confirm\u00f3 hace a\u00f1os que HTTPS es una se\u00f1al de posicionamiento, aunque ligera comparada con contenido, autoridad, intenci\u00f3n de b\u00fasqueda y experiencia de usuario. Pero reducir HTTPS a \u201cun factor SEO\u201d ser\u00eda pobre. Es confianza visible, compatibilidad con APIs modernas y requisito para muchas funciones del navegador.<\/p>\n<p>Adem\u00e1s, una migraci\u00f3n mal hecha puede fragmentar se\u00f1ales. Si tu sitio responde en estas cuatro variantes:<\/p>\n<ul>\n<li><code>http:\/\/ejemplo.com<\/code><\/li>\n<li><code>http:\/\/www.ejemplo.com<\/code><\/li>\n<li><code>https:\/\/ejemplo.com<\/code><\/li>\n<li><code>https:\/\/www.ejemplo.com<\/code><\/li>\n<\/ul>\n<p>debes elegir una versi\u00f3n final y redirigir las dem\u00e1s hacia ella con <strong>301 permanente<\/strong>. No se trata de capricho est\u00e9tico. Para buscadores, anal\u00edtica y usuarios, la consistencia es ox\u00edgeno.<\/p>\n<h3>Lista SEO tras activar HTTPS<\/h3>\n<h3>\u2705 Redirecci\u00f3n 301<\/h3>\n<p>Todas las URLs HTTP deben apuntar a su equivalente HTTPS, idealmente con un solo salto.<\/p>\n<h3>\u2705 Canonical actualizado<\/h3>\n<p>Las etiquetas <code>rel=\"canonical\"<\/code> deben usar la versi\u00f3n HTTPS final.<\/p>\n<h3>\u2705 Sitemap renovado<\/h3>\n<p>Incluye solo URLs HTTPS y vuelve a enviarlo en Google Search Console y Bing Webmaster Tools.<\/p>\n<h3>\u2705 Enlaces internos corregidos<\/h3>\n<p>Evita enlaces absolutos con HTTP dentro de men\u00fas, pies de p\u00e1gina y botones.<\/p>\n<h3>\u2705 Recursos seguros<\/h3>\n<p>Im\u00e1genes, CSS, JS, fuentes y iframes deben cargarse por HTTPS.<\/p>\n<h3>\u2705 Anal\u00edtica revisada<\/h3>\n<p>Comprueba que Google Analytics, Tag Manager, p\u00edxeles y conversiones sigan funcionando.<\/p>\n<p>Un comentario casi dom\u00e9stico: una vez migr\u00e9 una web est\u00e1tica peque\u00f1a, de esas que parec\u00edan no tener m\u00e1s misterio que una l\u00e1mpara de escritorio. Tres p\u00e1ginas, cuatro im\u00e1genes, un formulario externo. Todo perfecto\u2026 salvo un logotipo cargado desde un subdominio olvidado en HTTP. El navegador no gritaba; carraspeaba. Y a veces ese carraspeo basta para que un cliente pregunte si la web \u201cest\u00e1 hackeada\u201d. La confianza, en internet, tiene el grosor de un icono.<\/p>\n<h2 id=\"verificacion\">C\u00f3mo comprobar que HTTPS est\u00e1 bien forzado \ud83d\udd0e<\/h2>\n<p>No basta con abrir la portada y ver el candado. Hay que probar como probar\u00eda un usuario despistado, un buscador obstinado y un navegador quisquilloso.<\/p>\n<h3>1. Prueba manual en el navegador<\/h3>\n<p>Escribe expl\u00edcitamente:<\/p>\n<pre><code>http:\/\/tudominio.com<\/code><\/pre>\n<p>y verifica que termina en:<\/p>\n<pre><code>https:\/\/tudominio.com<\/code><\/pre>\n<p>Haz lo mismo con p\u00e1ginas internas:<\/p>\n<pre><code>http:\/\/tudominio.com\/contacto.html<\/code><\/pre>\n<p>Debe redirigir a:<\/p>\n<pre><code>https:\/\/tudominio.com\/contacto.html<\/code><\/pre>\n<h3>2. Usa curl desde terminal<\/h3>\n<pre><code>curl -I http:\/\/ejemplo.com<\/code><\/pre>\n<p>Una respuesta correcta deber\u00eda mostrar algo similar a:<\/p>\n<pre><code>HTTP\/1.1 301 Moved Permanently\nLocation: https:\/\/ejemplo.com\/<\/code><\/pre>\n<p>Tambi\u00e9n puedes seguir redirecciones:<\/p>\n<pre><code>curl -IL http:\/\/ejemplo.com<\/code><\/pre>\n<p>As\u00ed ver\u00e1s si hay demasiados saltos.<\/p>\n<h3>3. Revisa el certificado<\/h3>\n<p>Herramientas \u00fatiles:<\/p>\n<ul>\n<li><strong>SSL Labs Server Test:<\/strong> analiza certificado, protocolos TLS, cifrados y configuraci\u00f3n general.<\/li>\n<li><strong>Why No Padlock:<\/strong> ayuda a detectar contenido mixto.<\/li>\n<li><strong>SecurityHeaders.com:<\/strong> revisa cabeceras de seguridad como HSTS y CSP.<\/li>\n<li><strong>Google Search Console:<\/strong> permite inspeccionar indexaci\u00f3n, sitemaps y versi\u00f3n can\u00f3nica.<\/li>\n<\/ul>\n<h3>4. Comprueba con y sin www<\/h3>\n<p>Prueba todas las variantes:<\/p>\n<pre><code>http:\/\/ejemplo.com\nhttp:\/\/www.ejemplo.com\nhttps:\/\/ejemplo.com\nhttps:\/\/www.ejemplo.com<\/code><\/pre>\n<p>Todas deber\u00edan terminar en una \u00fanica versi\u00f3n final. Esa disciplina ahorra problemas de SEO, cookies, anal\u00edtica y cach\u00e9.<\/p>\n<h2 id=\"errores\">Errores frecuentes al forzar HTTPS y c\u00f3mo evitarlos<\/h2>\n<h3>Error 1: activar la redirecci\u00f3n antes del certificado<\/h3>\n<p>El resultado suele ser un aviso del navegador: \u201cLa conexi\u00f3n no es privada\u201d. T\u00e9cnicamente quisiste proteger al usuario; pr\u00e1cticamente lo asustaste en la entrada. Primero certificado v\u00e1lido, despu\u00e9s redirecci\u00f3n.<\/p>\n<h3>Error 2: crear bucles de redirecci\u00f3n<\/h3>\n<p>Ocurre cuando el servidor y el CDN se contradicen. Por ejemplo, Cloudflare en modo Flexible y Apache redirigiendo a HTTPS pueden provocar un bucle porque el origen cree que siempre recibe HTTP.<\/p>\n<p>Soluci\u00f3n: usa <strong>Full<\/strong> o <strong>Full (strict)<\/strong> en Cloudflare, instala certificado en el servidor de origen y simplifica reglas.<\/p>\n<h3>Error 3: mantener recursos HTTP en la p\u00e1gina<\/h3>\n<p>El sitio carga por HTTPS, pero una fuente, un script o una imagen sigue entrando por HTTP. Resultado: advertencias, bloqueos o p\u00e9rdida del candado visual.<\/p>\n<p>Soluci\u00f3n: b\u00fasqueda global en tus archivos por:<\/p>\n<pre><code>http:\/\/<\/code><\/pre>\n<p>y revisar cada aparici\u00f3n con paciencia de relojero.<\/p>\n<h3>Error 4: olvidar subdominios<\/h3>\n<p>Tu dominio principal funciona, pero <code>blog.ejemplo.com<\/code>, <code>cdn.ejemplo.com<\/code> o <code>assets.ejemplo.com<\/code> no. Si activas HSTS con <code>includeSubDomains<\/code>, el problema puede volverse serio.<\/p>\n<p>Soluci\u00f3n: audita subdominios antes de aplicar pol\u00edticas globales.<\/p>\n<h3>Error 5: usar redirecciones temporales 302 sin motivo<\/h3>\n<p>Para una migraci\u00f3n definitiva de HTTP a HTTPS, normalmente corresponde <strong>301<\/strong>. La redirecci\u00f3n 302 indica temporalidad y puede retrasar la consolidaci\u00f3n de se\u00f1ales en buscadores.<\/p>\n<h3>Error 6: no actualizar integraciones externas<\/h3>\n<p>Herramientas de email marketing, formularios embebidos, pasarelas, iframes de reserva o CRM pueden tener URLs antiguas. La web est\u00e1tica a veces parece simple, pero sus dependencias se comportan como ra\u00edces bajo la tierra: no se ven, pero levantan aceras.<\/p>\n<h2>Configuraciones r\u00e1pidas seg\u00fan escenario<\/h2>\n<h3>Escenario A: sitio HTML en hosting compartido con Apache<\/h3>\n<ol>\n<li>Activa certificado SSL\/TLS desde el panel.<\/li>\n<li>Comprueba que <code>https:\/\/tudominio.com<\/code> carga correctamente.<\/li>\n<li>A\u00f1ade redirecci\u00f3n en <code>.htaccess<\/code>.<\/li>\n<li>Actualiza enlaces internos, canonical, sitemap y recursos.<\/li>\n<li>Comprueba contenido mixto y redirecciones.<\/li>\n<\/ol>\n<pre><code>RewriteEngine On\n\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<h3>Escenario B: sitio HTML detr\u00e1s de Cloudflare<\/h3>\n<ol>\n<li>Instala certificado en el servidor de origen.<\/li>\n<li>Configura Cloudflare en <strong>Full (strict)<\/strong>.<\/li>\n<li>Activa <strong>Always Use HTTPS<\/strong>.<\/li>\n<li>Revisa reglas duplicadas en servidor para evitar bucles.<\/li>\n<li>Activa HSTS solo tras verificar subdominios y HTTPS completo.<\/li>\n<\/ol>\n<h3>Escenario C: sitio est\u00e1tico en GitHub Pages<\/h3>\n<ol>\n<li>Configura el dominio personalizado si aplica.<\/li>\n<li>Espera a que GitHub emita el certificado.<\/li>\n<li>Activa <strong>Enforce HTTPS<\/strong>.<\/li>\n<li>Actualiza URLs absolutas dentro del HTML.<\/li>\n<li>Reenv\u00eda sitemap HTTPS en Search Console.<\/li>\n<\/ol>\n<h3>Escenario D: sitio est\u00e1tico en Netlify<\/h3>\n<ol>\n<li>Asocia tu dominio.<\/li>\n<li>Verifica DNS.<\/li>\n<li>Activa HTTPS autom\u00e1tico.<\/li>\n<li>Si necesitas reglas personalizadas, usa <code>_redirects<\/code>.<\/li>\n<\/ol>\n<pre><code>http:\/\/ejemplo.com\/* https:\/\/ejemplo.com\/:splat 301!\nhttp:\/\/www.ejemplo.com\/* https:\/\/ejemplo.com\/:splat 301!\nhttps:\/\/www.ejemplo.com\/* https:\/\/ejemplo.com\/:splat 301!<\/code><\/pre>\n<h2>Cabeceras de seguridad recomendadas para acompa\u00f1ar HTTPS \ud83d\udee1\ufe0f<\/h2>\n<p>Forzar HTTPS es el primer escal\u00f3n, no la catedral entera. Si tienes acceso a cabeceras HTTP, considera implementar algunas defensas adicionales. No todas son obligatorias para todos los proyectos, pero conviene conocerlas.<\/p>\n<table>\n<thead>\n<tr>\n<th>Cabecera<\/th>\n<th>Funci\u00f3n<\/th>\n<th>Ejemplo<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>Strict-Transport-Security<\/code><\/td>\n<td>Obliga al navegador a usar HTTPS durante un periodo determinado.<\/td>\n<td><code>max-age=31536000; includeSubDomains<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Content-Security-Policy<\/code><\/td>\n<td>Controla desde d\u00f3nde pueden cargarse scripts, estilos, im\u00e1genes y otros recursos.<\/td>\n<td><code>upgrade-insecure-requests<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>X-Content-Type-Options<\/code><\/td>\n<td>Evita que el navegador interprete tipos MIME de forma ambigua.<\/td>\n<td><code>nosniff<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Referrer-Policy<\/code><\/td>\n<td>Controla cu\u00e1nta informaci\u00f3n de referencia se env\u00eda al navegar.<\/td>\n<td><code>strict-origin-when-cross-origin<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>Permissions-Policy<\/code><\/td>\n<td>Limita APIs del navegador como c\u00e1mara, micr\u00f3fono o geolocalizaci\u00f3n.<\/td>\n<td><code>geolocation=(), camera=(), microphone=()<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>En Apache, un conjunto razonable podr\u00eda verse as\u00ed:<\/p>\n<pre><code>&lt;IfModule mod_headers.c&gt;\n  Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"\n  Header always set X-Content-Type-Options \"nosniff\"\n  Header always set Referrer-Policy \"strict-origin-when-cross-origin\"\n  Header always set Permissions-Policy \"geolocation=(), camera=(), microphone=()\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>Y en Nginx:<\/p>\n<pre><code>add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\nadd_header X-Content-Type-Options \"nosniff\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nadd_header Permissions-Policy \"geolocation=(), camera=(), microphone=()\" always;<\/code><\/pre>\n<p><strong>Sobre CSP:<\/strong> una pol\u00edtica CSP completa puede romper scripts, fuentes o estilos si se define sin inventario previo. Empieza con auditor\u00eda, prueba en entorno controlado y, si hace falta, usa primero <code>Content-Security-Policy-Report-Only<\/code>.<\/p>\n<h2>Checklist final para una migraci\u00f3n HTTPS impecable<\/h2>\n<ul>\n<li>\ud83d\udd10 Certificado TLS v\u00e1lido instalado para dominio ra\u00edz y <code>www<\/code>.<\/li>\n<li>\ud83c\udf10 Sitio accesible correctamente por <code>https:\/\/<\/code> antes de redirigir.<\/li>\n<li>\u27a1\ufe0f Redirecci\u00f3n 301 desde HTTP a HTTPS.<\/li>\n<li>\ud83e\udded Elecci\u00f3n clara entre dominio con <code>www<\/code> o sin <code>www<\/code>.<\/li>\n<li>\ud83d\udd17 Enlaces internos actualizados o convertidos a rutas relativas.<\/li>\n<li>\ud83d\uddbc\ufe0f Im\u00e1genes, CSS, JS, fuentes e iframes cargando por HTTPS.<\/li>\n<li>\ud83d\udcc4 Canonical, Open Graph, JSON-LD y sitemap usando URLs HTTPS.<\/li>\n<li>\ud83e\udd16 <code>robots.txt<\/code> apuntando al sitemap HTTPS.<\/li>\n<li>\ud83d\udcca Search Console y herramientas de anal\u00edtica revisadas.<\/li>\n<li>\ud83e\uddea Pruebas con <code>curl -IL<\/code>, navegador y herramientas SSL.<\/li>\n<li>\ud83d\udee1\ufe0f HSTS aplicado con cautela, especialmente si hay subdominios.<\/li>\n<\/ul>\n<h2>Entonces, \u00bfpuede un HTML puro forzar HTTPS?<\/h2>\n<p>La respuesta corta: <strong>no por s\u00ed solo<\/strong>. La respuesta \u00fatil: <strong>s\u00ed puedes lograr que un sitio HTML puro cargue siempre por HTTPS configurando correctamente el servidor, hosting o CDN, y limpiando despu\u00e9s el HTML para que todo sea coherente<\/strong>.<\/p>\n<p>La web tiene estas paradojas encantadoras: una p\u00e1gina compuesta por archivos est\u00e1ticos puede necesitar decisiones de infraestructura muy serias. Un simple <code>index.html<\/code> puede depender de certificados, cabeceras, DNS, redirecciones, pol\u00edticas de seguridad y rastreadores de b\u00fasqueda. Lo m\u00ednimo, cuando se mira de cerca, rara vez es peque\u00f1o.<\/p>\n<p>Forzar HTTPS no es una moda ni una ceremonia para tranquilizar navegadores. Es una promesa t\u00e9cnica: quien llegue a tu sitio no ser\u00e1 enviado por un camino oscuro cuando existe una avenida iluminada. Y en internet, donde casi todo viaja invisible, esa promesa vale m\u00e1s de lo que parece. \ud83d\ude80<\/p>\n<p>Consejo profesional: documenta la configuraci\u00f3n aplicada \u2014reglas de redirecci\u00f3n, proveedor del certificado, fecha de renovaci\u00f3n, cabeceras activas y versi\u00f3n can\u00f3nica del dominio\u2014. El futuro t\u00fa, ese pobre desconocido que heredar\u00e1 tus decisiones dentro de seis meses, lo agradecer\u00e1.<\/p>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfC\u00f3mo forzar la carga mediante HTTPS en un sitio HTML puro? \ud83d\udd10 Hay sitios que<\/p>\n","protected":false},"author":1,"featured_media":3869,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mantenimiento"],"_links":{"self":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/comments?post=3870"}],"version-history":[{"count":1,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3870\/revisions"}],"predecessor-version":[{"id":3871,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3870\/revisions\/3871"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media\/3869"}],"wp:attachment":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media?parent=3870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/categories?post=3870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/tags?post=3870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}