technical

Redirigir HTTP a HTTPS

MetricSpot comprova si les peticions http:// es redirigeixen amb 301 a https://. Sense això, el teu lloc té dues còpies indexables i una finestra de degradació per a cada visitant nou.

Què comprova aquesta auditoria

Fa una petició a http://elteudomini.com/ i busca una resposta 301 o 308 amb una capçalera Location: apuntant a https://. La comprovació falla si la versió HTTP retorna 200 (el teu lloc es serveix en dual sobre text pla) o no retorna res (el port 80 d’HTTP no escolta).

Per què importa

Fins i tot amb HTTPS disponible, la primera petició d’un visitant nou és gairebé sempre en text pla. Escriu elteudomini.com i el navegador prova HTTP primer. Sense una redirecció, fallen tres coses alhora:

  • Dues còpies indexables. Google tracta http://example.com/page i https://example.com/page com a URL separades. Sense un 301 poden aparèixer totes dues a l’índex, dividint backlinks i senyal de posicionament.
  • Finestra de degradació. Aquesta primera petició en text pla és quan passen els atacs estil sslstrip en xarxes hostils. El servidor hauria de rebutjar la conversa i forçar la pujada a HTTPS.
  • Avisos de contingut mixt. Si la versió HTTP es renderitza, cada URL d’assets a la pàgina que no sigui relativa al protocol es carrega per HTTP, i els navegadors moderns les bloquegen silenciosament.

La redirecció és el pont cap a HSTS. Un cop HSTS està configurat, els navegadors deixen de tocar HTTP en visites de tornada, però la redirecció encara ha de capturar els primers visitants i els rastrejadors.

Com solucionar-ho

Escolta al port 80 i retorna 301 cap a l’equivalent HTTPS per a cada ruta:

nginx:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;

  return 301 https://www.example.com$request_uri;
}

Apache (.htaccess):

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

Caddy, automàtic. Caddy redirigeix HTTP→HTTPS per defecte un cop un bloc de site té un hostname elegible per a TLS.

Cloudflare, SSL/TLS → Edge Certificates → “Always Use HTTPS” → On.

Vercel / Netlify / Render / Dokku, la redirecció HTTPS està activada per defecte per a qualsevol projecte amb un domini personalitzat.

Aconsegueix primer un certificat. Si encara no en tens, Let’s Encrypt + Certbot és gratis i es renova automàticament:

sudo certbot --nginx -d example.com -d www.example.com

Audita el teu cas, curl -sI http://example.com/ ha d’imprimir HTTP/1.1 301 Moved Permanently i una capçalera Location: https://.... Qualsevol altra cosa (200, 404, connexió rebutjada) falla la comprovació.

Preguntes freqüents

301 o 308?

301 és l’estàndard. 308 (RFC 7538) és la mateixa idea però garanteix que el mètode i el cos no es reescriuen en la redirecció, cosa que importa per a peticions POST. Per a un lloc web típic amb tràfic GET, 301 està bé i és el que fa servir tot CDN / WAF per defecte.

I el subdomini de l’API, la mateixa regla?

Sí. Qualsevol subdomini que serveixi tràfic real hauria de redirigir HTTP a HTTPS de la mateixa manera. Si l’API és del tipus que només accepta HTTPS (sense fallback) també pots configurar el servidor perquè rebutgi del tot el port 80 amb connection: close.

Hauria de redirigir a www o no-www alhora?

Si col·lapses totes dues decisions en una redirecció, sí, combina-les perquè els visitants arribin a la URL canònica després d’un sol salt, no dos. Vegeu mantenir les cadenes de redireccions curtes per al parany d’apilar redireccions.

Fonts

Última actualització 2026-05-11