# HTTPS-átirányítás

> A teszt azt nézi, hogy a http:// cím átirányít-e a https:// változatra; ha nem, állíts be átirányítást a szerveren vagy a Cloudflare-ben.

A teszt azt ellenőrzi, hogy aki `http://` címen érkezik az oldaladra (régi linkről, könyvjelzőről, kézzel beírt címmel), átkerül-e a titkosított `https://` változatra. Ha nem, a látogató titkosítatlan kapcsolaton marad: a forgalmát útközben bárki olvashatja vagy módosíthatja, és a böngésző „nem biztonságos” jelzést mutat. A riportban a teszt súlyossága magas.

Az átirányítás a HSTS előfeltétele is: a böngésző a HSTS-fejlécet csak https-válaszból fogadja el, ezért előbb át kell vinni a látogatót a https-re (lásd: [HSTS](https://hub.hellowp.io/hu/report/biztonsag/hsts/)).

## Hogyan mérjük

A riport egyetlen kérést küld a `http://<host>/` címre, **átirányítás követése nélkül**, és a közvetlen választ nézi. A `<host>` a vizsgált domain, vagy `www.` előtaggal a domain, ha a csupasz domain nem válaszol.

- **Megfelelő:**
  - A válasz státuszkódja 301, 302, 307 vagy 308, van `Location` fejléce, és ez `https://` címre mutat ugyanarra a domainre. A `www.` előtagot a mérés nem veszi figyelembe, tehát `example.com` → `https://www.example.com/` is megfelelő.
  - A `http://` kérés egyáltalán nem sikerül (nincs nyitott 80-as port, kapcsolódási hiba vagy időtúllépés). Ilyenkor nincs titkosítatlan bejárat, ezért a teszt megfelel.
- **Hiba:**
  - A válasz nem átirányítás (például 200 vagy 404).
  - Az átirányításban nincs `Location` fejléc, vagy az nem értelmezhető.
  - A `Location` `http://` címre, vagy másik domainre mutat.

Amit a teszt **nem** néz: az átirányítás útvonalát (hogy a kért oldalra visz-e, vagy mindig a nyitóoldalra), az átirányítási láncot, és hogy a kód pontosan 301-e. A javító kártya tartós (301) átirányítást javasol, a mérés viszont a 302-t, 307-et és 308-at is elfogadja.

Ha az `https://` most nem működik rendesen (lejárt vagy hiányzó tanúsítvány), a riport kártyája azt mondja, hogy előbb azt javítsd: az átirányítás ilyenkor elérhetetlenné tenné az oldalt. Lásd: [TLS-tanúsítvány](https://hub.hellowp.io/hu/report/biztonsag/tls-tanusitvany/).

## Hogyan javítsd

Előbb győződj meg róla, hogy az `https://` változat érvényes tanúsítvánnyal működik. Utána válaszd a szervered szerinti módszert. A kártya kódja mindegyik változatnál a `www.` nélküli és a `www.` névre is érvényes; cseréld a példában szereplő `example.com` nevet a sajátodra.

### nginx

A meglévő, 80-as portú `server` blokk **helyére** írd, ne vegyél fel mellé újat:

```nginx title="nginx"
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}
```

A `return 301 <URL>` az nginx dokumentációja szerint átirányítást küld a megadott címre, a `$host$request_uri` pedig megtartja a kért gépnevet és útvonalat.

### Apache (.htaccess)

Tedd a webroot `.htaccess` fájljának **elejére**, minden más átírási szabály elé. WordPressnél a `# BEGIN WordPress` blokk fölé: alatta a WordPress szabálya az `index.php`-ra írja át a címeket, és az átirányítás csak a nyitóoldalon futna le.

```apache title=".htaccess"
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
```

Ha eléred a virtual host konfigurációt, az Apache dokumentációja ezt tartja a legtisztább megoldásnak: külön 80-as virtual host, benne `Redirect permanent`:

```apache title="Apache virtual host"
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent "/" "https://example.com/"
</VirtualHost>
```

Ha a Cloudflare „Flexible” SSL-módban áll az oldalad előtt, a fenti szabály végtelen átirányítást okoz. Ilyenkor használd a Cloudflare-változatot, vagy állítsd az SSL-módot „Full (strict)”-re.

### Cloudflare

Ha az oldal a Cloudflare mögött van, a peremen is beállítható: **SSL/TLS → Edge Certificates → Always Use HTTPS: On**.

```text title="Cloudflare"
Always Use HTTPS: On
```

A Cloudflare dokumentációja szerint a beállítás az összes `http` kérést `https`-re irányítja, és azt javasolja, hogy ne irányíts át a saját szervereden is, mert az átirányítási hurkot okozhat. A beállítás csak akkor jelenik meg, ha az SSL/TLS titkosítási mód nem „Off”.

## Hogyan ellenőrizd

Futtasd újra a riportot a domainre. Parancssorból a válasz fejléceit így nézheted meg:

```bash title="Terminál"
curl -I http://example.com/
```

A válasz első sorában 301-et (vagy más átirányítási kódot), a `location` fejlécben pedig `https://` címet kell látnod. A tanúsítvány és a TLS-beállítás részletes ellenőrzéséhez használhatod az [SSL Labs tesztjét](https://hub.hellowp.io/hu/knowledge-base/useful-tools/ssl-labs/) is.
