Redirecționare HTTP la HTTPS și www sau fără www prin .htaccess

Tipărire
  • 1

Ca toți vizitatorii să ajungă pe aceeași adresă securizată, adăugați câteva reguli de rescriere la începutul fișierului .htaccess din folderul site-ului. Mai jos găsiți reguli gata de folosit pentru situațiile obișnuite: de la HTTP la HTTPS, eliminarea sau adăugarea prefixului www și ambele într-o singură redirecționare.

Ce verificați înainte de modificare

  • Certificatul SSL trebuie să fie activ atât pentru domeniu.md, cât și pentru www.domeniu.md. Altfel, redirecționarea duce vizitatorul direct la un avertisment de securitate. Starea lui o vedeți în cPanel, la Security, apoi SSL/TLS Status (detalii în articolul despre certificatul gratuit AutoSSL).
  • Deschideți cPanel, apoi File Manager, și intrați în folderul domeniului: public_html pentru domeniul principal sau folderul ales la adăugarea unui domeniu suplimentar (addon).
  • Fișierele al căror nume începe cu punct sunt ascunse. Apăsați Settings în colțul din dreapta sus al File Manager și bifați Show Hidden Files (dotfiles).
  • Descărcați pe calculator fișierul .htaccess actual, ca să îl puteți repune dacă apare o problemă. Dacă fișierul nu există, creați-l cu + File.

Pentru editare, faceți clic dreapta pe fișier și alegeți Edit. Inserați regula chiar la început, deasupra blocurilor de tipul # BEGIN WordPress, apoi apăsați Save Changes.

Reguli gata făcute

Alegeți o singură variantă și înlocuiți domeniu.md cu domeniul dvs. Mai multe variante puse una sub alta intră în conflict.

Doar HTTP la HTTPS

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

De la www la domeniul fără www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

Ținta începe deja cu https://, așa că vizitatorul care a scris www ajunge și pe adresa securizată.

De la domeniul fără www la www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domeniu\.md$ [NC]
RewriteRule ^ https://www.domeniu.md%{REQUEST_URI} [L,R=301]

HTTPS fără www, dintr-un singur pas (recomandat)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domeniu\.md$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://domeniu.md%{REQUEST_URI} [L,R=301]

Prima condiție aplică regula numai domeniului dvs., deci subdomeniile cu foldere în interiorul public_html nu sunt atinse. Orice cerere prin HTTP sau pentru www merge la https://domeniu.md cu un singur 301, nu cu un lanț de două redirecționări.

HTTPS cu www, dintr-un singur pas

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domeniu\.md$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.domeniu.md%{REQUEST_URI} [L,R=301]

HTTPS fără să editați fișiere

Dacă vă trebuie doar trecerea de la HTTP la HTTPS, cPanel are un comutator pentru asta. Deschideți secțiunea Domains, apoi Domains, și activați Force HTTPS Redirect pe rândul domeniului. Comutatorul devine disponibil numai după ce domeniul are un certificat valid. Pentru a trimite vizitatorii către alt domeniu sau altă pagină, folosiți instrumentul Redirects din cPanel.

Cum testați redirecționarea

  • Deschideți o fereastră privată a browserului și încercați http://domeniu.md, http://www.domeniu.md și https://www.domeniu.md. Toate trebuie să ajungă la adresa aleasă.
  • Browserele rețin mult timp redirecționările 301. Cât timp faceți probe, scrieți R=302 în loc de R=301 și reveniți la 301 când totul funcționează.
  • Din linia de comandă, curl -I http://domeniu.md trebuie să răspundă cu codul 301 și cu un rând Location care conține adresa nouă.

Probleme frecvente și soluții

Browserul afișează ERR_TOO_MANY_REDIRECTS

Adresa sare la nesfârșit între două variante. Cauzele obișnuite:

  • Domeniul trece prin Cloudflare cu modul SSL „Flexible”: serverul primește mereu HTTP simplu și redirecționează din nou. Setați modul „Full (strict)”, așa cum arată ghidul despre Cloudflare.
  • În WordPress, la Settings, apoi General, cele două adrese ale site-ului indică cealaltă variantă (de exemplu cu www, deși regula îl elimină). Puneți-le în acord cu regula.
  • Un plugin de redirecționare, o regulă creată în Redirects din cPanel și regula dvs. trag în direcții diferite. Păstrați doar una dintre ele.

Eroare 500 imediat după salvare

Fișierul conține o greșeală de scriere, de multe ori un spațiu lipsă sau un caracter stricat copiat dintr-un editor de documente. Încărcați copia salvată și adăugați regula din nou, cu atenție. Alte cauze ale acestei erori sunt descrise în articolul despre erorile 500 și 503.

Nu se întâmplă nimic

Verificați dacă ați editat .htaccess din folderul corect (un domeniu addon are propriul fișier), dacă regula stă deasupra blocului CMS-ului și dacă nu vedeți o redirecționare veche reținută de browser. Dacă problema rămâne, deschideți un tichet și scrieți domeniul și regula folosită.

Articole utile

Răspunsul a fost util?